Show More
@@ -704,6 +704,27 b' exit 1' | |||||
704 | class svn_sink(converter_sink, commandline): |
|
704 | class svn_sink(converter_sink, commandline): | |
705 | commit_re = re.compile(r'Committed revision (\d+).', re.M) |
|
705 | commit_re = re.compile(r'Committed revision (\d+).', re.M) | |
706 |
|
706 | |||
|
707 | # iterates sublist of given list for concatenated length is within limit | |||
|
708 | def limit_arglist(self, files): | |||
|
709 | if os.name != 'nt': | |||
|
710 | yield files | |||
|
711 | return | |||
|
712 | # When I tested on WinXP, limit = 2500 is NG, 2400 is OK | |||
|
713 | limit = 2000 | |||
|
714 | bytes = 0 | |||
|
715 | fl = [] | |||
|
716 | for fn in files: | |||
|
717 | b = len(fn) + 1 | |||
|
718 | if bytes + b < limit: | |||
|
719 | fl.append(fn) | |||
|
720 | bytes += b | |||
|
721 | else: | |||
|
722 | yield fl | |||
|
723 | fl = [] | |||
|
724 | bytes = 0 | |||
|
725 | if fl: | |||
|
726 | yield fl | |||
|
727 | ||||
707 | def prerun(self): |
|
728 | def prerun(self): | |
708 | if self.wc: |
|
729 | if self.wc: | |
709 | os.chdir(self.wc) |
|
730 | os.chdir(self.wc) | |
@@ -842,12 +863,14 b' class svn_sink(converter_sink, commandli' | |||||
842 | if not os.path.exists(self.wjoin(d, '.svn', 'entries'))] |
|
863 | if not os.path.exists(self.wjoin(d, '.svn', 'entries'))] | |
843 | if add_dirs: |
|
864 | if add_dirs: | |
844 | add_dirs.sort() |
|
865 | add_dirs.sort() | |
845 | self.run('add', non_recursive=True, quiet=True, *add_dirs) |
|
866 | for fl in self.limit_arglist(add_dirs): | |
|
867 | self.run('add', non_recursive=True, quiet=True, *fl) | |||
846 | return add_dirs |
|
868 | return add_dirs | |
847 |
|
869 | |||
848 | def add_files(self, files): |
|
870 | def add_files(self, files): | |
849 | if files: |
|
871 | if files: | |
850 | self.run('add', quiet=True, *files) |
|
872 | for fl in self.limit_arglist(files): | |
|
873 | self.run('add', quiet=True, *fl) | |||
851 | return files |
|
874 | return files | |
852 |
|
875 | |||
853 | def tidy_dirs(self, names): |
|
876 | def tidy_dirs(self, names): | |
@@ -881,15 +904,18 b' class svn_sink(converter_sink, commandli' | |||||
881 | self._copyfile(s, d) |
|
904 | self._copyfile(s, d) | |
882 | self.copies = [] |
|
905 | self.copies = [] | |
883 | if self.delete: |
|
906 | if self.delete: | |
884 |
self. |
|
907 | for fl in self.limit_arglist(self.delete): | |
|
908 | self.run0('delete', *fl) | |||
885 | self.delete = [] |
|
909 | self.delete = [] | |
886 | entries.update(self.add_files(files.difference(entries))) |
|
910 | entries.update(self.add_files(files.difference(entries))) | |
887 | entries.update(self.tidy_dirs(entries)) |
|
911 | entries.update(self.tidy_dirs(entries)) | |
888 | if self.delexec: |
|
912 | if self.delexec: | |
889 | self.run0('propdel', 'svn:executable', *self.delexec) |
|
913 | for fl in self.limit_arglist(self.delexec): | |
|
914 | self.run0('propdel', 'svn:executable', *fl) | |||
890 | self.delexec = [] |
|
915 | self.delexec = [] | |
891 | if self.setexec: |
|
916 | if self.setexec: | |
892 | self.run0('propset', 'svn:executable', '*', *self.setexec) |
|
917 | for fl in self.limit_arglist(self.setexec): | |
|
918 | self.run0('propset', 'svn:executable', '*', *fl) | |||
893 | self.setexec = [] |
|
919 | self.setexec = [] | |
894 |
|
920 | |||
895 | fd, messagefile = tempfile.mkstemp(prefix='hg-convert-') |
|
921 | fd, messagefile = tempfile.mkstemp(prefix='hg-convert-') | |
@@ -900,8 +926,7 b' class svn_sink(converter_sink, commandli' | |||||
900 | output = self.run0('commit', |
|
926 | output = self.run0('commit', | |
901 | username=util.shortuser(commit.author), |
|
927 | username=util.shortuser(commit.author), | |
902 | file=messagefile, |
|
928 | file=messagefile, | |
903 |
encoding='utf-8' |
|
929 | encoding='utf-8') | |
904 | *list(entries)) |
|
|||
905 | try: |
|
930 | try: | |
906 | rev = self.commit_re.search(output).group(1) |
|
931 | rev = self.commit_re.search(output).group(1) | |
907 | except AttributeError: |
|
932 | except AttributeError: |
General Comments 0
You need to be logged in to leave comments.
Login now