merge: fix adding untracked files on directory rename (issue612)
authorMatt Mackall <mpm@selenic.com>
Thu, 05 Jul 2007 16:01:07 -0500
changeset 4819 9797124581c9
parent 4748 8808ea7da86b
child 4820 8706e75e6431
merge: fix adding untracked files on directory rename (issue612) Fix from Brendan Added test case
mercurial/merge.py
tests/test-issue612
tests/test-issue612.out
--- a/mercurial/merge.py	Thu Jul 05 13:34:18 2007 -0500
+++ b/mercurial/merge.py	Thu Jul 05 16:01:07 2007 -0500
@@ -478,6 +478,9 @@
                     repo.dirstate.forget([f])
         elif m == "d": # directory rename
             f2, fd, flag = a[2:]
+            if not f2 and f not in repo.dirstate:
+                # untracked file moved
+                continue
             if branchmerge:
                 repo.dirstate.update([fd], 'a')
                 if f:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-issue612	Thu Jul 05 16:01:07 2007 -0500
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+mkdir t
+cd t
+
+hg init
+mkdir src
+echo a > src/a.c
+hg ci -Ama -d "10000000 0"
+
+hg mv src source
+hg ci -Ammove -d "1000000 0"
+
+hg co -C 0
+echo new > src/a.c
+echo compiled > src/a.o
+hg ci -mupdate -d "1000000 0"
+
+hg st
+
+hg merge
+
+hg st
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-issue612.out	Thu Jul 05 16:01:07 2007 -0500
@@ -0,0 +1,11 @@
+adding src/a.c
+copying src/a.c to source/a.c
+removing src/a.c
+1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+? src/a.o
+merging src/a.c and source/a.c
+1 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+M source/a.c
+R src/a.c
+? source/a.o