Fix bug with co -C across branches, update tests
authormpm@selenic.com
Tue, 13 Sep 2005 18:38:27 -0500
changeset 1236 67a28636ea64
parent 1235 5c0bd13bd771
child 1237 227cfbe34109
Fix bug with co -C across branches, update tests
mercurial/localrepo.py
tests/test-merge1
tests/test-merge1.out
tests/test-revert-unknown
tests/test-revert-unknown.out
tests/test-update-reverse
tests/test-update-reverse.out
--- a/mercurial/localrepo.py	Tue Sep 13 14:23:43 2005 -0500
+++ b/mercurial/localrepo.py	Tue Sep 13 18:38:27 2005 -0500
@@ -1108,12 +1108,16 @@
                     self.ui.debug("other deleted %s\n" % f)
                     remove.append(f) # other deleted it
             else:
-                if n == m1.get(f, nullid): # same as parent
+                # file is created on branch or in working directory
+                if force and f not in umap:
+                    self.ui.debug("remote deleted %s, clobbering\n" % f)
+                    remove.append(f)
+                elif n == m1.get(f, nullid): # same as parent
                     if p2 == pa: # going backwards?
                         self.ui.debug("remote deleted %s\n" % f)
                         remove.append(f)
                     else:
-                        self.ui.debug("local created %s, keeping\n" % f)
+                        self.ui.debug("local modified %s, keeping\n" % f)
                 else:
                     self.ui.debug("working dir created %s, keeping\n" % f)
 
--- a/tests/test-merge1	Tue Sep 13 14:23:43 2005 -0500
+++ b/tests/test-merge1	Tue Sep 13 18:38:27 2005 -0500
@@ -21,8 +21,8 @@
 hg add c
 hg commit -m "commit #2" -d "0 0"
 echo This is file b1 > b
+echo %% no merges expected
 env HGMERGE=../merge hg update -m 1
-# no merges expected
 cd ..; /bin/rm -rf t
 
 mkdir t
@@ -40,9 +40,10 @@
 hg add c
 hg commit -m "commit #2" -d "0 0"
 echo This is file b2 > b
+echo %% merge of b expected
 env HGMERGE=../merge hg update -m 1
-# merge of b expected
 cd ..; /bin/rm -rf t
+echo %%
 
 mkdir t
 cd t
@@ -59,10 +60,13 @@
 echo This is file c1 > c
 hg add c
 hg commit -m "commit #3" -d "0 0"
+
+echo 'Contents of b should be "this is file b1"'
 cat b
+
 echo This is file b22 > b
+echo %% merge expected!
 env HGMERGE=../merge hg update -m 2
-# merge expected!
 cd ..; /bin/rm -rf t
 
 mkdir t
@@ -81,6 +85,6 @@
 hg add c
 hg commit -m "commit #3" -d "0 0"
 echo This is file b33 > b
+echo %% merge of b expected
 env HGMERGE=../merge hg update -m 2
-# merge of b expected
 cd ..; /bin/rm -rf t
--- a/tests/test-merge1.out	Tue Sep 13 14:23:43 2005 -0500
+++ b/tests/test-merge1.out	Tue Sep 13 18:38:27 2005 -0500
@@ -1,7 +1,13 @@
+%% no merges expected
+%% merge of b expected
 merging for b
 merging b
+%%
+Contents of b should be "this is file b1"
 This is file b1
+%% merge expected!
 merging for b
 merging b
+%% merge of b expected
 merging for b
 merging b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-revert-unknown	Tue Sep 13 18:38:27 2005 -0500
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+hg init
+touch unknown
+
+touch a
+hg add a
+hg ci -m "1" -d "0 0"
+
+touch b
+hg add b
+hg ci -m "2" -d "0 0"
+
+echo %% Should show unknown
+hg status
+hg revert -r 0
+echo %% Should show unknown and b removed
+hg status
+echo %% Should show a and unknown
+ls
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-revert-unknown.out	Tue Sep 13 18:38:27 2005 -0500
@@ -0,0 +1,8 @@
+%% Should show unknown
+? unknown
+%% Should show unknown and b removed
+R b
+? unknown
+%% Should show a and unknown
+a
+unknown
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-update-reverse	Tue Sep 13 18:38:27 2005 -0500
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+hg init
+touch a
+hg add a
+hg commit -m "Added a" -d "0 0"
+
+touch main
+hg add main
+hg commit -t "Added main" -d "0 0"
+hg checkout 0
+
+echo Main should be gone
+ls
+
+touch side1 
+hg add side1
+hg commit -m "Added side1" -d "0 0"
+touch side2
+hg add side2
+hg commit -m "Added side2" -d "0 0"
+
+hg log
+
+echo Should have two heads, side2 and main
+hg heads
+
+echo Should show "a side1 side2"
+ls
+
+hg update --debug -C 1
+echo Should only show "a main"
+ls
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-update-reverse.out	Tue Sep 13 18:38:27 2005 -0500
@@ -0,0 +1,53 @@
+Warning: -t and --text is deprecated, please use -m or --message instead.
+Main should be gone
+a
+changeset:   3:91ebc10ed028
+tag:         tip
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added side2
+
+changeset:   2:b932d7dbb1e1
+parent:      0:c2eda428b523
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added side1
+
+changeset:   1:71a760306caf
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added main
+
+changeset:   0:c2eda428b523
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added a
+
+Should have two heads, side2 and main
+changeset:   3:91ebc10ed028
+tag:         tip
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added side2
+
+changeset:   1:71a760306caf
+user:        test
+date:        Thu Jan  1 00:00:00 1970 +0000
+summary:     Added main
+
+Should show a side1 side2
+a
+side1
+side2
+resolving manifests
+ force 1 allow None moddirstate True linear False
+ ancestor 8515d4bfda76 local 1c0f48f8ece6 remote 0594b9004bae
+remote deleted side2, clobbering
+remote deleted side1, clobbering
+remote created main
+getting main
+removing side1
+removing side2
+Should only show a main
+a
+main