Rev 3911: Add a --show-ids parameter since we have a policy to never show in lp:~vila/bzr/306879-show-base-revid

Vincent Ladeuil v.ladeuil+lp at free.fr
Thu Dec 18 17:14:45 GMT 2008


At lp:~vila/bzr/306879-show-base-revid

------------------------------------------------------------
revno: 3911
revision-id: v.ladeuil+lp at free.fr-20081218171443-2lrei05wqi7xav64
parent: v.ladeuil+lp at free.fr-20081216172926-mc8dt2qyfg1pxa2y
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 306879-show-base-revid
timestamp: Thu 2008-12-18 18:14:43 +0100
message:
  Add a --show-ids parameter since we have a policy to never show
  ids unless required by the user.
  
  
  * bzrlib/tests/blackbox/test_remerge.py:
  (TestRemerge.create_conflicts): Lightly adpated to simplify new
  tests writing.
  (TestRemerge.test_conflicts, TestRemerge.test_conflicts): Test
  --show-ids (with or without).
  
  * bzrlib/tests/blackbox/test_merge.py:
  (TestMerge.test_merge_show_base_show_ids): revid is shown only if
  show-ids is used.
  
  * bzrlib/merge.py:
  (Merger.__init__): Add a show_ids attribute.
  (Merger.make_merger): Propagate show_ids.
  (Merge3Merger.__init__): Add a show_ids attribute.
  (Merge3Merger.text_merge.iter_merge3): Respect show_ids parameter.
  
  * bzrlib/builtins.py:
  (cmd_merge, cmd_remerge): Add a --show-ids parameter.
-------------- next part --------------
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2008-12-12 12:14:01 +0000
+++ b/bzrlib/builtins.py	2008-12-18 17:14:43 +0000
@@ -2989,6 +2989,7 @@
         'remember',
         Option('show-base', help="Show base revision text in "
                "conflicts."),
+        'show-ids',
         Option('uncommitted', help='Apply uncommitted changes'
                ' from a working copy, instead of branch changes.'),
         Option('pull', help='If the destination is already'
@@ -3005,7 +3006,8 @@
     ]
 
     def run(self, location=None, revision=None, force=False,
-            merge_type=None, show_base=False, reprocess=None, remember=False,
+            merge_type=None, show_base=False, show_ids=False,
+            reprocess=None, remember=False,
             uncommitted=False, pull=False,
             directory=None,
             preview=False,
@@ -3063,6 +3065,7 @@
             merger.merge_type = merge_type
             merger.reprocess = reprocess
             merger.show_base = show_base
+            merger.show_ids = show_ids
             self.sanity_check_merger(merger)
             if (merger.base_rev_id == merger.other_rev_id and
                 merger.other_rev_id is not None):
@@ -3249,9 +3252,11 @@
             'reprocess',
             Option('show-base',
                    help="Show base revision text in conflicts."),
+            'show-ids',
             ]
 
-    def run(self, file_list=None, merge_type=None, show_base=False,
+    def run(self, file_list=None, merge_type=None,
+            show_base=False, show_ids=False,
             reprocess=False):
         if merge_type is None:
             merge_type = _mod_merge.Merge3Merger
@@ -3276,7 +3281,7 @@
                     interesting_ids.add(file_id)
                     if tree.kind(file_id) != "directory":
                         continue
-                    
+
                     for name, ie in tree.inventory.iter_entries(file_id):
                         interesting_ids.add(ie.file_id)
                 new_conflicts = conflicts.select_conflicts(tree, file_list)[0]
@@ -3307,6 +3312,7 @@
                 merger.interesting_ids = interesting_ids
                 merger.merge_type = merge_type
                 merger.show_base = show_base
+                merger.show_ids = show_ids
                 merger.reprocess = reprocess
                 conflicts = merger.do_merge()
             finally:

=== modified file 'bzrlib/merge.py'
--- a/bzrlib/merge.py	2008-12-16 16:26:15 +0000
+++ b/bzrlib/merge.py	2008-12-18 17:14:43 +0000
@@ -88,6 +88,7 @@
         self.interesting_ids = None
         self.interesting_files = None
         self.show_base = False
+        self.show_ids = False
         self.reprocess = False
         self._pb = pb
         self.pp = None
@@ -441,6 +442,7 @@
                                   " type %s." % self.merge_type)
         if self.merge_type.supports_show_base:
             kwargs['show_base'] = self.show_base
+            kwargs['show_ids'] = self.show_ids
         elif self.show_base:
             raise BzrError("Showing base is not supported for this"
                            " merge type. %s" % self.merge_type)
@@ -533,7 +535,8 @@
     supports_lca_trees = True
 
     def __init__(self, working_tree, this_tree, base_tree, other_tree, 
-                 interesting_ids=None, reprocess=False, show_base=False,
+                 interesting_ids=None, reprocess=False,
+                 show_base=False, show_ids=False,
                  pb=DummyProgress(), pp=None, change_reporter=None,
                  interesting_files=None, do_merge=True,
                  cherrypick=False, lca_trees=None):
@@ -575,6 +578,7 @@
         self.cooked_conflicts = []
         self.reprocess = reprocess
         self.show_base = show_base
+        self.show_ids = show_ids
         self._lca_trees = lca_trees
         # Uncommenting this will change the default algorithm to always use
         # _entries_lca. This can be useful for running the test suite and
@@ -1195,10 +1199,14 @@
         def iter_merge3(retval):
             retval["text_conflicts"] = False
 
-            get_base_revid = getattr(self.base_tree, 'get_revision_id', None)
-            if get_base_revid is None:
-                get_base_revid = self.base_tree.last_revision
-            name_base = 'BASE-REVISION (revid:%s)' % get_base_revid()
+            if self.show_ids:
+                get_base_revid = getattr(self.base_tree,
+                                         'get_revision_id', None)
+                if get_base_revid is None:
+                    get_base_revid = self.base_tree.last_revision
+                name_base = 'BASE-REVISION (revid:%s)' % get_base_revid()
+            else:
+                name_base = 'BASE-REVISION'
             for line in m3.merge_lines(name_a="TREE",
                                        name_b="MERGE-SOURCE",
                                        name_base=name_base,

=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py	2008-12-16 16:26:15 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py	2008-12-18 17:14:43 +0000
@@ -165,6 +165,23 @@
                              '<<<<<<< TREE\n'
                              'B\n'
                              'C\n'
+                             '||||||| BASE-REVISION\n'
+                             'b\n'
+                             'c\n'
+                             '=======\n'
+                             'B\n'
+                             'D\n'
+                             '>>>>>>> MERGE-SOURCE\n',
+                             tree.get_file_text('f-id'))
+
+    def test_merge_show_base_show_ids(self):
+        tree, other = self.create_conflicting_branches()
+        self.run_bzr(['merge',  '../other',  '--show-base', '--show-ids'],
+                     working_dir='tree', retcode=1)
+        self.assertEqualDiff('a\n'
+                             '<<<<<<< TREE\n'
+                             'B\n'
+                             'C\n'
                              '||||||| BASE-REVISION (revid:rev1)\n'
                              'b\n'
                              'c\n'

=== modified file 'bzrlib/tests/blackbox/test_remerge.py'
--- a/bzrlib/tests/blackbox/test_remerge.py	2007-06-26 20:32:49 +0000
+++ b/bzrlib/tests/blackbox/test_remerge.py	2008-12-18 17:14:43 +0000
@@ -34,19 +34,20 @@
         """Create a conflicted tree"""
         os.mkdir('base')
         os.chdir('base')
-        self.make_file('hello', "hi world")
+        self.make_file('hello', "hi world\n")
         self.make_file('answer', "42")
         self.run_bzr('init')
         self.run_bzr('add')
-        self.run_bzr('commit -m base')
+        wt = WorkingTree.open('.')
+        wt.commit('base', rev_id='base-revid')
         self.run_bzr('branch . ../other')
         self.run_bzr('branch . ../this')
         os.chdir('../other')
-        self.make_file('hello', "Hello.")
+        self.make_file('hello', "Hello.\n")
         self.make_file('answer', "Is anyone there?")
         self.run_bzr('commit -m other')
         os.chdir('../this')
-        self.make_file('hello', "Hello, world")
+        self.make_file('hello', "Hello, world\n")
         self.run_bzr('mv answer question')
         self.make_file('question', "What do you get when you multiply six"
                                    "times nine?")
@@ -119,3 +120,31 @@
         self.assertEqual(2, len(wt.conflicts()))
         self.run_bzr('remerge hello', retcode=1)
         self.assertEqual(2, len(wt.conflicts()))
+
+    def test_show_base(self):
+        self.create_conflicts()
+        self.run_bzr(['merge', '../other'], retcode=1)
+        self.run_bzr(['remerge',  '--show-base', 'hello'], retcode=1)
+        tree = WorkingTree.open('.')
+        self.assertEqualDiff('<<<<<<< TREE\n'
+                             'Hello, world\n'
+                             '||||||| BASE-REVISION\n'
+                             'hi world\n'
+                             '=======\n'
+                             'Hello.\n'
+                             '>>>>>>> MERGE-SOURCE\n',
+                             tree.get_file_text(tree.path2id('hello')))
+    def test_show_base_show_ids(self):
+        self.create_conflicts()
+        self.run_bzr(['merge', '../other'], retcode=1)
+        self.run_bzr(['remerge',  '--show-base', '--show-ids', 'hello'],
+                     retcode=1)
+        tree = WorkingTree.open('.')
+        self.assertEqualDiff('<<<<<<< TREE\n'
+                             'Hello, world\n'
+                             '||||||| BASE-REVISION (revid:base-revid)\n'
+                             'hi world\n'
+                             '=======\n'
+                             'Hello.\n'
+                             '>>>>>>> MERGE-SOURCE\n',
+                             tree.get_file_text(tree.path2id('hello')))



More information about the bazaar-commits mailing list