Rev 4675: Don't allow remove-tree to succeed with pending merges unless in file:///home/vila/src/bzr/bugs/merge-strict/

Vincent Ladeuil v.ladeuil+lp at free.fr
Tue Sep 8 17:45:11 BST 2009


At file:///home/vila/src/bzr/bugs/merge-strict/

------------------------------------------------------------
revno: 4675
revision-id: v.ladeuil+lp at free.fr-20090908164511-5e7eupewxycwaue4
parent: v.ladeuil+lp at free.fr-20090908164251-8lskfhs8f9aclnnp
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: merge-strict
timestamp: Tue 2009-09-08 18:45:11 +0200
message:
  Don't allow remove-tree to succeed with pending merges unless
  --force is used.
  
  * bzrlib/tests/blackbox/test_remove_tree.py:
  (TestRemoveTree.test_remove_tree_pending_merges,
  TestRemoveTree.test_remove_tree_pending_merges_force): Test with
  and without --force and pending merges.
  
  * bzrlib/builtins.py:
  (cmd_remove_tree.run): Check pending merges too.
-------------- next part --------------
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2009-09-08 16:42:51 +0000
+++ b/bzrlib/builtins.py	2009-09-08 16:45:11 +0000
@@ -461,8 +461,8 @@
             raise errors.BzrCommandError("You cannot remove the working tree"
                                          " of a remote path")
         if not force:
-            # XXX: What about pending merges ? -- vila 20090629
-            if working.has_changes(working.basis_tree()):
+            if (working.has_changes(working.basis_tree())
+                or len(working.get_parent_ids()) > 1):
                 raise errors.UncommittedChanges(working)
 
         working_path = working.bzrdir.root_transport.base

=== modified file 'bzrlib/tests/blackbox/test_remove_tree.py'
--- a/bzrlib/tests/blackbox/test_remove_tree.py	2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/blackbox/test_remove_tree.py	2009-09-08 16:45:11 +0000
@@ -122,3 +122,30 @@
         self.run_bzr('remove-tree branch1 --force')
         self.failIfExists('branch1/foo')
         self.failUnlessExists('branch1/bar')
+
+    def test_remove_tree_pending_merges(self):
+        self.run_bzr(['branch', 'branch1', 'branch2'])
+        self.build_tree(['branch1/bar'])
+        self.tree.add('bar')
+        self.tree.commit('2')
+        self.failUnlessExists('branch1/bar')
+        self.run_bzr(['merge', '../branch1'], working_dir='branch2')
+        self.failUnlessExists('branch2/bar')
+        self.run_bzr(['revert', '.'], working_dir='branch2')
+        self.failIfExists('branch2/bar')
+        output = self.run_bzr_error(["Working tree .* has uncommitted changes"],
+                                    'remove-tree branch2', retcode=3)
+
+    def test_remove_tree_pending_merges_force(self):
+        self.run_bzr(['branch', 'branch1', 'branch2'])
+        self.build_tree(['branch1/bar'])
+        self.tree.add('bar')
+        self.tree.commit('2')
+        self.failUnlessExists('branch1/bar')
+        self.run_bzr(['merge', '../branch1'], working_dir='branch2')
+        self.failUnlessExists('branch2/bar')
+        self.run_bzr(['revert', '.'], working_dir='branch2')
+        self.failIfExists('branch2/bar')
+        self.run_bzr('remove-tree branch2 --force')
+        self.failIfExists('branch2/foo')
+        self.failIfExists('branch2/bar')



More information about the bazaar-commits mailing list