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