[PATCH evolve-ext] Fix preservation of rename information on evolve (#33)

Julien Cristau julien.cristau at logilab.fr
Mon Apr 14 11:32:12 CDT 2014


# HG changeset patch
# User Julien Cristau <julien.cristau at logilab.fr>
# Date 1397492195 -7200
#      Mon Apr 14 18:16:35 2014 +0200
# Branch stable
# Node ID 4f84b3307dc2defcd2600cf6ef5893d1ec61ea41
# Parent  12ed6dfa8eead0deb3b3062df1466e63c1e54640
Fix preservation of rename information on evolve (#33)

Following what rebase itself does, call duplicatecopies between
rebasenode and concludenode.

Should fix
https://bitbucket.org/marmoute/mutable-history/issue/33/evolve-command-loses-copy-metadata

diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -743,19 +743,19 @@ def relocate(repo, orig, dest):
         if not orig.p2().rev() == node.nullrev:
             raise util.Abort(
                 'no support for evolution merge changesets yet',
                 hint="Redo the merge a use `hg prune` to obsolete the old one")
         destbookmarks = repo.nodebookmarks(dest.node())
-        cmdutil.duplicatecopies(repo, orig.node(), dest.node())
         nodesrc = orig.node()
         destphase = repo[nodesrc].phase()
         try:
             r = rebase.rebasenode(repo, orig.node(), dest.node(),
                                   {node.nullrev: node.nullrev}, False)
             if r[-1]: #some conflict
                 raise util.Abort(
                         'unresolved merge conflicts (see hg help resolve)')
+            cmdutil.duplicatecopies(repo, orig.node(), dest.node())
             nodenew = rebase.concludenode(repo, orig.node(), dest.node(),
                                           node.nullid)
         except util.Abort, exc:
             class LocalMergeFailure(MergeFailure, exc.__class__):
                 pass
diff --git a/tests/test-evolve.t b/tests/test-evolve.t
--- a/tests/test-evolve.t
+++ b/tests/test-evolve.t
@@ -643,5 +643,30 @@ Test olog
 
   $ hg olog
   4	: add 4 - test
   5	: add 3 - test
   11	: add 1 - test
+
+
+Test evolving renames
+
+  $ hg up null
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ echo a > a
+  $ hg ci -Am a
+  adding a
+  created new head
+  $ echo b > b
+  $ hg ci -Am b
+  adding b
+  $ hg mv a c
+  $ hg ci -m c
+  $ hg kill .^
+  1 changesets pruned
+  1 new unstable changesets
+  $ hg stab --any
+  move:[15] c
+  atop:[13] a
+  $ hg st -C --change=tip
+  A c
+    a
+  R a


More information about the Mercurial-devel mailing list