83 def __init__(self, p): |
83 def __init__(self, p): |
84 self.copyfrom_path = p.copyfrom_path |
84 self.copyfrom_path = p.copyfrom_path |
85 self.copyfrom_rev = p.copyfrom_rev |
85 self.copyfrom_rev = p.copyfrom_rev |
86 self.action = p.action |
86 self.action = p.action |
87 |
87 |
88 def get_log_child(fp, url, paths, start, end, limit=0, discover_changed_paths=True, |
88 def get_log_child(fp, url, paths, start, end, limit=0, |
89 strict_node_history=False): |
89 discover_changed_paths=True, strict_node_history=False): |
90 protocol = -1 |
90 protocol = -1 |
91 def receiver(orig_paths, revnum, author, date, message, pool): |
91 def receiver(orig_paths, revnum, author, date, message, pool): |
92 if orig_paths is not None: |
92 if orig_paths is not None: |
93 for k, v in orig_paths.iteritems(): |
93 for k, v in orig_paths.iteritems(): |
94 orig_paths[k] = changedpath(v) |
94 orig_paths[k] = changedpath(v) |
274 try: |
274 try: |
275 latest = int(rev) |
275 latest = int(rev) |
276 except ValueError: |
276 except ValueError: |
277 raise util.Abort(_('svn: revision %s is not an integer') % rev) |
277 raise util.Abort(_('svn: revision %s is not an integer') % rev) |
278 |
278 |
279 self.trunkname = self.ui.config('convert', 'svn.trunk', 'trunk').strip('/') |
279 self.trunkname = self.ui.config('convert', 'svn.trunk', |
|
280 'trunk').strip('/') |
280 self.startrev = self.ui.config('convert', 'svn.startrev', default=0) |
281 self.startrev = self.ui.config('convert', 'svn.startrev', default=0) |
281 try: |
282 try: |
282 self.startrev = int(self.startrev) |
283 self.startrev = int(self.startrev) |
283 if self.startrev < 0: |
284 if self.startrev < 0: |
284 self.startrev = 0 |
285 self.startrev = 0 |
860 firstcset.parents.append(latest) |
861 firstcset.parents.append(latest) |
861 except SvnPathNotFound: |
862 except SvnPathNotFound: |
862 pass |
863 pass |
863 except SubversionException, (inst, num): |
864 except SubversionException, (inst, num): |
864 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
865 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
865 raise util.Abort(_('svn: branch has no revision %s') % to_revnum) |
866 raise util.Abort(_('svn: branch has no revision %s') |
|
867 % to_revnum) |
866 raise |
868 raise |
867 |
869 |
868 def getfile(self, file, rev): |
870 def getfile(self, file, rev): |
869 # TODO: ra.get_file transmits the whole file instead of diffs. |
871 # TODO: ra.get_file transmits the whole file instead of diffs. |
870 if file in self.removed: |
872 if file in self.removed: |
947 relpaths = [] |
949 relpaths = [] |
948 for p in paths: |
950 for p in paths: |
949 if not p.startswith('/'): |
951 if not p.startswith('/'): |
950 p = self.module + '/' + p |
952 p = self.module + '/' + p |
951 relpaths.append(p.strip('/')) |
953 relpaths.append(p.strip('/')) |
952 args = [self.baseurl, relpaths, start, end, limit, discover_changed_paths, |
954 args = [self.baseurl, relpaths, start, end, limit, |
953 strict_node_history] |
955 discover_changed_paths, strict_node_history] |
954 arg = encodeargs(args) |
956 arg = encodeargs(args) |
955 hgexe = util.hgexecutable() |
957 hgexe = util.hgexecutable() |
956 cmd = '%s debugsvnlog' % util.shellquote(hgexe) |
958 cmd = '%s debugsvnlog' % util.shellquote(hgexe) |
957 stdin, stdout = util.popen2(util.quotecommand(cmd)) |
959 stdin, stdout = util.popen2(util.quotecommand(cmd)) |
958 stdin.write(arg) |
960 stdin.write(arg) |