# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1281549454 -7200 # Node ID 9cf547fc36e83918317f06877df8f72391178ee7 # Parent 1add57910c82fc2da0071237ca376acb2743c8cd pull: fix shallow clone when lastest change isn't HEAD. Previously, using `hg clone --startrev HEAD` when the actual HEAD revision didn't touch the prefix, would cause it to report that no changes were found. Using last_changed_rev instead of HEAD fixes this. In order to better test this scenario, we now clone the trunk subdirectory of all the fixtures. diff --git a/hgsubversion/wrappers.py b/hgsubversion/wrappers.py --- a/hgsubversion/wrappers.py +++ b/hgsubversion/wrappers.py @@ -241,7 +241,7 @@ def pull(repo, source, heads=[], force=F # we are initializing a new repository start = repo.ui.config('hgsubversion', 'startrev', 0) if isinstance(start, str) and start.upper() == 'HEAD': - start = svn.HEAD + start = svn.last_changed_rev else: start = int(start) diff --git a/tests/test_startrev.py b/tests/test_startrev.py --- a/tests/test_startrev.py +++ b/tests/test_startrev.py @@ -21,7 +21,7 @@ def _do_case(self, name, subdir, stupid) self.assertMultiLineEqual(fulltip[f].data(), headtip[f].data()) def buildmethod(case, name, subdir, stupid): - m = lambda self: self._do_case(case, subdir, stupid) + m = lambda self: self._do_case(case, subdir.strip('/'), stupid) m.__name__ = name m.__doc__ = ('Test clone with startrev on %s%s with %s replay.' % (case, subdir, (stupid and 'stupid') or 'real')) @@ -31,10 +31,7 @@ def buildmethod(case, name, subdir, stup attrs = {'_do_case': _do_case, } for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]: - # this fixture results in an empty repository, don't use it - if case == 'project_root_not_repo_root.svndump': - continue - subdir = test_util.subdir.get(case, '') + subdir = test_util.subdir.get(case, '') + '/trunk' bname = 'test_' + case[:-len('.svndump')] attrs[bname] = buildmethod(case, bname, subdir, False)