Rev 4215: log mainline only by default (Ian Clatworthy) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Mon Mar 30 04:59:18 BST 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4215
revision-id: pqm at pqm.ubuntu.com-20090330035915-432gps2egb1gh01p
parent: pqm at pqm.ubuntu.com-20090330004851-70utb2qlpnc4u9um
parent: ian.clatworthy at canonical.com-20090330030930-1dusbvvinsyk5zkr
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2009-03-30 04:59:15 +0100
message:
log mainline only by default (Ian Clatworthy)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
------------------------------------------------------------
revno: 4214.1.1
revision-id: ian.clatworthy at canonical.com-20090330030930-1dusbvvinsyk5zkr
parent: pqm at pqm.ubuntu.com-20090330004851-70utb2qlpnc4u9um
parent: ian.clatworthy at canonical.com-20090326125741-rog22bmdq6oxwfzr
committer: Ian Clatworthy <ian.clatworthy at canonical.com>
branch nick: ianc-integration
timestamp: Mon 2009-03-30 13:09:30 +1000
message:
log mainline only by default (Ian Clatworthy)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
------------------------------------------------------------
revno: 4206.1.1
revision-id: ian.clatworthy at canonical.com-20090326125741-rog22bmdq6oxwfzr
parent: pqm at pqm.ubuntu.com-20090326063330-evutyvml3067dpsz
committer: Ian Clatworthy <ian.clatworthy at canonical.com>
branch nick: bzr.log-mainline-by-default
timestamp: Thu 2009-03-26 22:57:41 +1000
message:
log mainline by default
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
=== modified file 'NEWS'
--- a/NEWS 2009-03-29 23:52:11 +0000
+++ b/NEWS 2009-03-30 03:09:30 +0000
@@ -16,6 +16,12 @@
must now be explicitly added tree references. At the commandline, use
join --reference instead of add. (Aaron Bentley)
+* The ``--long`` log format (the default) no longer shows merged
+ revisions implicitly, making it consistent with the ``short`` and
+ ``line`` log formats. To see merged revisions for just a given
+ revision, use ``bzr log -n0 -rX``. To see every merged revision,
+ use ``bzr log -n0``. (Ian Clatworthy)
+
New Features
************
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2009-03-28 14:24:46 +0000
+++ b/bzrlib/builtins.py 2009-03-30 03:09:30 +0000
@@ -1933,9 +1933,8 @@
--show-ids display revision-ids (and file-ids), not just revnos
Note that the default number of levels to display is a function of the
- log format. If the -n option is not used, ``short`` and ``line`` show
- just the top level (mainline) while ``long`` shows all levels of merged
- revisions.
+ log format. If the -n option is not used, the standard log formats show
+ just the top level (mainline).
Status summaries are shown using status flags like A, M, etc. To see
the changes explained using words like ``added`` and ``modified``
@@ -2027,21 +2026,16 @@
You may find it useful to add the aliases below to ``bazaar.conf``::
[ALIASES]
- tip = log -r-1 -n1
+ tip = log -r-1
top = log -l10 --line
- show = log -v -p -n1 --long
+ show = log -v -p
``bzr tip`` will then show the latest revision while ``bzr top``
will show the last 10 mainline revisions. To see the details of a
particular revision X, ``bzr show -rX``.
- As many GUI tools and Web interfaces do, you may prefer viewing
- history collapsed initially. If you are interested in looking deeper
- into a particular merge X, use ``bzr log -n0 -rX``. If you like
- working this way, you may wish to either:
-
- * change your default log format to short (or line)
- * add this alias: log = log -n1
+ If you are interested in looking deeper into a particular merge X,
+ use ``bzr log -n0 -rX``.
``bzr log -v`` on a branch with lots of history is currently
very slow. A fix for this issue is currently under development.
=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py 2009-03-29 23:52:11 +0000
+++ b/bzrlib/log.py 2009-03-30 03:09:30 +0000
@@ -1402,6 +1402,7 @@
class LongLogFormatter(LogFormatter):
supports_merge_revisions = True
+ preferred_levels = 1
supports_delta = True
supports_tags = True
supports_diff = True
=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py 2009-03-29 02:35:13 +0000
+++ b/bzrlib/tests/blackbox/test_log.py 2009-03-30 03:09:30 +0000
@@ -213,9 +213,9 @@
os.chdir('branch2')
self.run_bzr('merge ../branch1') # tags don't propagate otherwise
branch2_tree.commit(message='merge branch 1')
- log = self.run_bzr("log -r-1")[0]
+ log = self.run_bzr("log -n0 -r-1")[0]
self.assertContainsRe(log, r' tags: tag1')
- log = self.run_bzr("log -r3.1.1")[0]
+ log = self.run_bzr("log -n0 -r3.1.1")[0]
self.assertContainsRe(log, r'tags: tag1')
def test_log_limit(self):
@@ -336,7 +336,7 @@
def test_merges_are_indented_by_level(self):
self._prepare()
- out,err = self.run_bzr('log')
+ out,err = self.run_bzr('log -n0')
self.assertEqual('', err)
log = normalize_log(out)
self.assertEqualDiff(log, """\
@@ -446,7 +446,7 @@
def test_merges_single_merge_rev(self):
self._prepare()
- out,err = self.run_bzr('log -r1.1.2')
+ out,err = self.run_bzr('log -n0 -r1.1.2')
self.assertEqual('', err)
log = normalize_log(out)
self.assertEqualDiff(log, """\
@@ -468,7 +468,7 @@
def test_merges_partial_range(self):
self._prepare()
- out, err = self.run_bzr('log -r1.1.1..1.1.2')
+ out, err = self.run_bzr('log -n0 -r1.1.1..1.1.2')
self.assertEqual('', err)
log = normalize_log(out)
self.assertEqualDiff(log, """\
@@ -537,9 +537,9 @@
committer='Lorem Ipsum <test at example.com>')
os.chdir('parent')
- def test_log_show_diff_long(self):
+ def test_log_show_diff_long_with_merges(self):
self._prepare()
- out,err = self.run_bzr('log -p')
+ out,err = self.run_bzr('log -p -n0')
self.assertEqual('', err)
log = normalize_log(out)
self.assertEqualDiff(subst_dates(log), """\
@@ -833,43 +833,43 @@
def test_log_file(self):
"""The log for a particular file should only list revs for that file"""
self.prepare_tree()
- log = self.run_bzr('log file1')[0]
+ log = self.run_bzr('log -n0 file1')[0]
self.assertContainsRe(log, 'revno: 1\n')
self.assertNotContainsRe(log, 'revno: 2\n')
self.assertNotContainsRe(log, 'revno: 3\n')
self.assertNotContainsRe(log, 'revno: 3.1.1\n')
self.assertNotContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log file2')[0]
+ log = self.run_bzr('log -n0 file2')[0]
self.assertNotContainsRe(log, 'revno: 1\n')
self.assertContainsRe(log, 'revno: 2\n')
self.assertNotContainsRe(log, 'revno: 3\n')
self.assertContainsRe(log, 'revno: 3.1.1\n')
self.assertContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log file3')[0]
+ log = self.run_bzr('log -n0 file3')[0]
self.assertNotContainsRe(log, 'revno: 1\n')
self.assertNotContainsRe(log, 'revno: 2\n')
self.assertContainsRe(log, 'revno: 3\n')
self.assertNotContainsRe(log, 'revno: 3.1.1\n')
self.assertNotContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log -r3.1.1 file2')[0]
+ log = self.run_bzr('log -n0 -r3.1.1 file2')[0]
self.assertNotContainsRe(log, 'revno: 1\n')
self.assertNotContainsRe(log, 'revno: 2\n')
self.assertNotContainsRe(log, 'revno: 3\n')
self.assertContainsRe(log, 'revno: 3.1.1\n')
self.assertNotContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log -r4 file2')[0]
- self.assertNotContainsRe(log, 'revno: 1\n')
- self.assertNotContainsRe(log, 'revno: 2\n')
- self.assertNotContainsRe(log, 'revno: 3\n')
- self.assertContainsRe(log, 'revno: 3.1.1\n')
- self.assertContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log -r3.. file2')[0]
- self.assertNotContainsRe(log, 'revno: 1\n')
- self.assertNotContainsRe(log, 'revno: 2\n')
- self.assertNotContainsRe(log, 'revno: 3\n')
- self.assertContainsRe(log, 'revno: 3.1.1\n')
- self.assertContainsRe(log, 'revno: 4 ')
- log = self.run_bzr('log -r..3 file2')[0]
+ log = self.run_bzr('log -n0 -r4 file2')[0]
+ self.assertNotContainsRe(log, 'revno: 1\n')
+ self.assertNotContainsRe(log, 'revno: 2\n')
+ self.assertNotContainsRe(log, 'revno: 3\n')
+ self.assertContainsRe(log, 'revno: 3.1.1\n')
+ self.assertContainsRe(log, 'revno: 4 ')
+ log = self.run_bzr('log -n0 -r3.. file2')[0]
+ self.assertNotContainsRe(log, 'revno: 1\n')
+ self.assertNotContainsRe(log, 'revno: 2\n')
+ self.assertNotContainsRe(log, 'revno: 3\n')
+ self.assertContainsRe(log, 'revno: 3.1.1\n')
+ self.assertContainsRe(log, 'revno: 4 ')
+ log = self.run_bzr('log -n0 -r..3 file2')[0]
self.assertNotContainsRe(log, 'revno: 1\n')
self.assertContainsRe(log, 'revno: 2\n')
self.assertNotContainsRe(log, 'revno: 3\n')
@@ -888,7 +888,7 @@
# Check logging a deleted file is ok if the file existed
# at the end the revision range
self.prepare_tree(complex=True)
- log, err = self.run_bzr('log -r..4 file2')
+ log, err = self.run_bzr('log -n0 -r..4 file2')
self.assertEquals('', err)
self.assertNotContainsRe(log, 'revno: 1\n')
self.assertContainsRe(log, 'revno: 2\n')
=== modified file 'bzrlib/tests/test_log.py'
--- a/bzrlib/tests/test_log.py 2009-03-29 02:35:13 +0000
+++ b/bzrlib/tests/test_log.py 2009-03-30 03:09:30 +0000
@@ -536,7 +536,7 @@
wt.commit('merge branch 1')
b = wt.branch
sio = self.make_utf8_encoded_stringio()
- lf = log.LongLogFormatter(to_file=sio)
+ lf = log.LongLogFormatter(to_file=sio, levels=0)
log.show_log(b, lf, verbose=True)
the_log = normalize_log(sio.getvalue())
self.assertEqualDiff("""\
@@ -593,7 +593,7 @@
wt.commit('merge branch 1')
b = wt.branch
sio = self.make_utf8_encoded_stringio()
- lf = log.LongLogFormatter(to_file=sio)
+ lf = log.LongLogFormatter(to_file=sio, levels=0)
log.show_log(b, lf, verbose=True)
the_log = normalize_log(sio.getvalue())
self.assertEqualDiff("""\
=== modified file 'doc/en/user-guide/browsing_history.txt'
--- a/doc/en/user-guide/browsing_history.txt 2008-07-16 00:25:44 +0000
+++ b/doc/en/user-guide/browsing_history.txt 2009-03-26 12:57:41 +0000
@@ -13,24 +13,34 @@
% bzr log -r 1000..1100 # changes from 1000 to 1100
% bzr log -r 1000 # The changes in only revision 1000
-Viewing the mainline
---------------------
+Viewing merged revisions
+------------------------
As distributed VCS tools like Bazaar make merging much easier than
-it is in central VCS tools, the history of a branch may often show
+it is in central VCS tools, the history of a branch may often contain
lines of development splitting off the mainline and merging back
in at a later time. Technically, the relationship between the
numerous revision nodes is known as a Directed Acyclic Graph or
DAG for short.
-In many cases though, you may only be interested in seeing the *mainline*
-for a branch, namely the primary line of development within the DAG.
-To do this, use the following command::
-
- bzr log --short
-
-If you do this commonly, you may even wish to create an alias for it
-as explained in `Using aliases`_.
+In many cases, you typically want to see the mainline first and drill
+down from there. The default behaviour of log is therefore to show
+the mainline and indicate which revisions have nested merged revisions.
+To explore the merged revisions for revision X, use the following command::
+
+ bzr log -n0 -rX
+
+To see all revisions and all their merged revisions::
+
+ bzr log -n0
+
+Note that the -n option is used to indicate the number of levels to display
+where 0 means all. If that is too noisy, you can easily adjust the number
+to only view down so far. For example, if your project is structured with
+a top level gatekeeper merging changes from team gatekeepers, ``bzr log``
+shows what the top level gatekeeper did while ``bzr log -n2`` shows what
+the team gatekeepers did. In the vast majority of cases though, ``-n0``
+is fine.
Tuning the output
-----------------
More information about the bazaar-commits
mailing list