# HG changeset patch # User Mads Kiilerich # Date 2013-07-18 23:40:57 # Node ID 948df0f10ec13a837079e835481900d7da904244 # Parent 2345c9eb73c732e04eb76ff6bd2288d36cfdb04d convert: fix bad conversion of copies when hg.startrev is specified The 'copynode' was looked up in self.keep as if it was a changeset node. It is however a filelog node, and self.keep would thus fail if it actually looked at its parameter ... which it only did if a startrev was specified. Instead we now don't check the copy node - we don't have to. It must have been copied from one of the parents, and we already check whether one of the parents have the copy source. We could perhaps use linkrev to see if the corresponding changeset was converted ... but that would sometimes be wrong. The existing test of this was wrong - now it is better, but it seems like it exposes a 'log' issue. diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py --- a/hgext/convert/hg.py +++ b/hgext/convert/hg.py @@ -316,8 +316,8 @@ class mercurial_source(converter_source) if name in self.ignored: continue try: - copysource, copynode = ctx.filectx(name).renamed() - if copysource in self.ignored or not self.keep(copynode): + copysource, _copynode = ctx.filectx(name).renamed() + if copysource in self.ignored: continue # Ignore copy sources not in parent revisions found = False diff --git a/tests/test-convert-hg-startrev.t b/tests/test-convert-hg-startrev.t --- a/tests/test-convert-hg-startrev.t +++ b/tests/test-convert-hg-startrev.t @@ -120,16 +120,26 @@ Convert from merge parent Check copy preservation + $ hg st -C --change 2 e + M e + $ hg st -C --change 1 e + A e + a + $ hg st -C --change 0 a + A a + +(It seems like a bug in log that the following doesn't show rev 1.) + $ hg log --follow --copies e - changeset: 2:60633ee11cfa + changeset: 2:82bbac3d2cf4 user: test date: Thu Jan 01 00:00:04 1970 +0000 summary: 4: merge 2 and 3 - changeset: 1:d56e8baefff8 + changeset: 0:23c3be426dce user: test - date: Thu Jan 01 00:00:02 1970 +0000 - summary: 2: copy e from a, change b + date: Thu Jan 01 00:00:01 1970 +0000 + summary: 1: add c, move f to d Check copy removal on missing parent