Rev 4143: Make merge --force work again. in http://people.ubuntu.com/~robertc/baz2.0/pending/merge

Robert Collins robertc at robertcollins.net
Fri Mar 13 06:46:31 GMT 2009


At http://people.ubuntu.com/~robertc/baz2.0/pending/merge

------------------------------------------------------------
revno: 4143
revision-id: robertc at robertcollins.net-20090313064625-ufwahhop77x1v139
parent: pqm at pqm.ubuntu.com-20090313035623-vn0615cs6bd6590e
committer: Robert Collins <robertc at robertcollins.net>
branch nick: merge
timestamp: Fri 2009-03-13 17:46:25 +1100
message:
  Make merge --force work again.
=== modified file 'NEWS'
--- a/NEWS	2009-03-13 03:16:26 +0000
+++ b/NEWS	2009-03-13 06:46:25 +0000
@@ -42,7 +42,9 @@
 
     * Fixed incorrect "Source format does not support stacking" warning
       when pushing to a smart server.  (Andrew Bennetts, #334114)
-      
+
+    * ``merge --force`` works again. (Robert Collins, #342105)
+
     * The GNU Changelog formatter is slightly improved in the case where
       the delta is empty, and now correctly claims not to support tags.
       (Andrea Bolognani)

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2009-03-13 01:27:47 +0000
+++ b/bzrlib/builtins.py	2009-03-13 06:46:25 +0000
@@ -3387,9 +3387,10 @@
             basis_tree = tree.revision_tree(tree.last_revision())
         except errors.NoSuchRevision:
             basis_tree = tree.basis_tree()
-        changes = tree.changes_from(basis_tree)
-        if changes.has_changed():
-            raise errors.UncommittedChanges(tree)
+        if not force:
+            changes = tree.changes_from(basis_tree)
+            if changes.has_changed():
+                raise errors.UncommittedChanges(tree)
 
         view_info = _get_view_info_for_change_reporter(tree)
         change_reporter = delta._ChangeReporter(

=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py	2009-02-27 08:37:19 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py	2009-03-13 06:46:25 +0000
@@ -491,6 +491,18 @@
         out, err = self.run_bzr(['merge', '-d', 'a', 'b'])
         self.assertContainsRe(err, 'Warning: criss-cross merge encountered.')
 
+    def test_merge_force(self):
+        tree_a = self.make_branch_and_tree('a')
+        self.build_tree(['a/foo'])
+        tree_a.add(['foo'])
+        tree_a.commit('add file')
+        tree_b = tree_a.bzrdir.sprout('b').open_workingtree()
+        self.build_tree_contents([('a/foo', 'change 1')])
+        tree_a.commit('change file')
+        tree_b.merge_from_branch(tree_a.branch)
+        tree_a.commit('empty change to allow merge to run')
+        self.run_bzr(['merge', '../a', '--force'], working_dir='b')
+
     def test_merge_from_submit(self):
         tree_a = self.make_branch_and_tree('a')
         tree_b = tree_a.bzrdir.sprout('b').open_workingtree()




More information about the bazaar-commits mailing list