Mercurial > hg-stable
changeset 6850:c6bb8fae3bd2
convert: normalize paths sent to svn get_log (issue 1219)
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 27 Jul 2008 17:09:33 +0200 |
parents | 59c40c60d8d8 |
children | 6ec941b6003d |
files | hgext/convert/subversion.py |
diffstat | 1 files changed, 22 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/subversion.py Fri Jul 25 20:43:41 2008 +0200 +++ b/hgext/convert/subversion.py Sun Jul 27 17:09:33 2008 +0200 @@ -130,18 +130,6 @@ self._stdout.close() self._stdout = None -def get_log(url, paths, start, end, limit=0, discover_changed_paths=True, - strict_node_history=False): - args = [url, paths, start, end, limit, discover_changed_paths, - strict_node_history] - arg = encodeargs(args) - hgexe = util.hgexecutable() - cmd = '%s debugsvnlog' % util.shellquote(hgexe) - stdin, stdout = os.popen2(cmd, 'b') - stdin.write(arg) - stdin.close() - return logstream(stdout) - # SVN conversion code stolen from bzr-svn and tailor # # Subversion looks like a versioned filesystem, branches structures @@ -394,7 +382,7 @@ tagspath = self.tags start = svn.ra.get_latest_revnum(self.ra) try: - for entry in get_log(self.url, [self.tags], start, self.startrev): + for entry in self._getlog([self.tags], start, self.startrev): origpaths, revnum, author, date, message = entry copies = [(e.copyfrom_path, e.copyfrom_rev, p) for p, e in origpaths.iteritems() if e.copyfrom_path] @@ -490,7 +478,7 @@ # stat() gives us the previous revision on this line of development, but # it might be in *another module*. Fetch the log and detect renames down # to the latest revision. - stream = get_log(self.url, [path], stop, dirent.created_rev) + stream = self._getlog([path], stop, dirent.created_rev) try: for entry in stream: paths, revnum, author, date, message = entry @@ -814,7 +802,7 @@ try: firstcset = None lastonbranch = False - stream = get_log(self.url, [self.module], from_revnum, to_revnum) + stream = self._getlog([self.module], from_revnum, to_revnum) try: for entry in stream: paths, revnum, author, date, message = entry @@ -912,6 +900,25 @@ # to PROPFIND subversion errors return svn.ra.check_path(self.ra, path.strip('/'), revnum) + def _getlog(self, paths, start, end, limit=0, discover_changed_paths=True, + strict_node_history=False): + # Normalize path names, svn >= 1.5 only wants paths relative to + # supplied URL + relpaths = [] + for p in paths: + if not p.startswith('/'): + p = self.module + '/' + p + relpaths.append(p.strip('/')) + args = [self.base, relpaths, start, end, limit, discover_changed_paths, + strict_node_history] + arg = encodeargs(args) + hgexe = util.hgexecutable() + cmd = '%s debugsvnlog' % util.shellquote(hgexe) + stdin, stdout = os.popen2(cmd, 'b') + stdin.write(arg) + stdin.close() + return logstream(stdout) + pre_revprop_change = '''#!/bin/sh REPOS="$1"