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