# HG changeset patch # User Augie Fackler # Date 1255734565 14400 # Node ID 5e0dfe59d4c36a7b625df44a773b44184bbcf9af # Parent 44bde69b6c49b94bcf3152352d17daf875cf9e8c copies: fix under-reporting of copies in hg diff --git a/hgsubversion/editor.py b/hgsubversion/editor.py --- a/hgsubversion/editor.py +++ b/hgsubversion/editor.py @@ -278,8 +278,9 @@ class HgEditor(delta.Editor): parentid = self.meta.get_parent_revision(self.current.rev.revnum, branch) if parentid != revlog.nullid: parentctx = self.repo.changectx(parentid) - if util.aresamefiles(parentctx, cp_f_ctx, copies.values()): - self.current.copies.update(copies) + for k, v in copies.iteritems(): + if util.aresamefiles(parentctx, cp_f_ctx, [v]): + self.current.copies.update({k: v}) return path @ieditor diff --git a/hgsubversion/stupid.py b/hgsubversion/stupid.py --- a/hgsubversion/stupid.py +++ b/hgsubversion/stupid.py @@ -322,10 +322,10 @@ def getcopies(svn, meta, branch, branchp sourcectx = getctx(rev) if sourcectx is None: continue - sources = [s[1] for s in copies] - if not util.aresamefiles(sourcectx, parentctx, sources): - continue - hgcopies.update(copies) + for k, v in copies: + if not util.aresamefiles(sourcectx, parentctx, [v]): + continue + hgcopies.update({k: v}) return hgcopies def fetch_externals(svn, branchpath, r, parentctx): diff --git a/tests/test_fetch_renames.py b/tests/test_fetch_renames.py --- a/tests/test_fetch_renames.py +++ b/tests/test_fetch_renames.py @@ -39,7 +39,10 @@ class TestFetchRenames(test_util.TestBas 9: { 'unchanged2': ('unchanged', 'unchanged\n'), 'unchangeddir2/f': ('unchangeddir/f', 'unchanged2\n'), - } + }, + 10: { + 'groupdir2/b': ('groupdir/b', 'b\n') + }, } for rev in repo: ctx = repo[rev]