histedit: use base for computing renames when folding (issue3729) stable
authorMartin Geisler <martin@geisler.net>
Mon, 15 Jul 2013 15:04:42 +0200
branchstable
changeset 19392 f6b047cf9272
parent 19391 347ccd936fa6
child 19393 33e1b2d4bdbc
child 19412 de269e18d09b
histedit: use base for computing renames when folding (issue3729) When a file was renamed in the very first changeset being histedited, the rename was not detected. Consider a history like this: 0 base: add a.txt 1 first: rename a.txt to b.txt 2 last: edit b.txt When 1 and 2 are edited, copies.pathcopies(first, last) correctly returns that nothing was renamed. We must instead use copies.pathcopies(first, last) to detect the initial rename.
hgext/histedit.py
tests/test-histedit-fold.t
--- a/hgext/histedit.py	Mon Jul 15 13:20:39 2013 +0200
+++ b/hgext/histedit.py	Mon Jul 15 15:04:42 2013 +0200
@@ -247,7 +247,7 @@
         files.update(ctx.files())
 
     # Recompute copies (avoid recording a -> b -> a)
-    copied = copies.pathcopies(first, last)
+    copied = copies.pathcopies(base, last)
 
     # prune files which were reverted by the updates
     def samefile(f):
--- a/tests/test-histedit-fold.t	Mon Jul 15 13:20:39 2013 +0200
+++ b/tests/test-histedit-fold.t	Mon Jul 15 15:04:42 2013 +0200
@@ -266,3 +266,37 @@
   +6
   $ cd ..
 
+
+Folding with initial rename (issue3729)
+---------------------------------------
+
+  $ hg init fold-rename
+  $ cd fold-rename
+  $ echo a > a.txt
+  $ hg add a.txt
+  $ hg commit -m a
+  $ hg rename a.txt b.txt
+  $ hg commit -m rename
+  $ echo b >> b.txt
+  $ hg commit -m b
+
+  $ hg logt --follow b.txt
+  2:e0371e0426bc b
+  1:1c4f440a8085 rename
+  0:6c795aa153cb a
+
+  $ hg histedit 1c4f440a8085 --commands - 2>&1 << EOF | fixbundle
+  > pick 1c4f440a8085 rename
+  > fold e0371e0426bc b
+  > EOF
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  reverting b.txt
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+  $ hg logt --follow b.txt
+  1:cf858d235c76 rename
+  0:6c795aa153cb a
+
+  $ cd ..