Rev 4214: merge indicators in log --long (Ian Clatworthy) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Mon Mar 30 01:48:55 BST 2009


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 4214
revision-id: pqm at pqm.ubuntu.com-20090330004851-70utb2qlpnc4u9um
parent: pqm at pqm.ubuntu.com-20090329043818-5luxyk8q3opz4ulu
parent: ian.clatworthy at canonical.com-20090329235211-uad2ldqofw77q6ch
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2009-03-30 01:48:51 +0100
message:
  merge indicators in log --long (Ian Clatworthy)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  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
    ------------------------------------------------------------
    revno: 4213.1.1
    revision-id: ian.clatworthy at canonical.com-20090329235211-uad2ldqofw77q6ch
    parent: pqm at pqm.ubuntu.com-20090329043818-5luxyk8q3opz4ulu
    parent: ian.clatworthy at canonical.com-20090329023513-jggqg2dd6r2jwo8e
    committer: Ian Clatworthy <ian.clatworthy at canonical.com>
    branch nick: ianc-integration
    timestamp: Mon 2009-03-30 09:52:11 +1000
    message:
      merge indicators in log --long (Ian Clatworthy)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      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
    ------------------------------------------------------------
    revno: 4208.2.2
    revision-id: ian.clatworthy at canonical.com-20090329023513-jggqg2dd6r2jwo8e
    parent: ian.clatworthy at canonical.com-20090327015311-2pjd7s0yqebuf9sb
    committer: Ian Clatworthy <ian.clatworthy at canonical.com>
    branch nick: bzr.log-merge-indicator
    timestamp: Sun 2009-03-29 12:35:13 +1000
    message:
      show --levels 0 in advice, not just -n0
    modified:
      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
    ------------------------------------------------------------
    revno: 4208.2.1
    revision-id: ian.clatworthy at canonical.com-20090327015311-2pjd7s0yqebuf9sb
    parent: pqm at pqm.ubuntu.com-20090326131816-4nzmlssnd4huc5cu
    committer: Ian Clatworthy <ian.clatworthy at canonical.com>
    branch nick: bzr.log-merge-indicator
    timestamp: Fri 2009-03-27 11:53:11 +1000
    message:
      merge indicators in log --long
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      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
=== modified file 'NEWS'
--- a/NEWS	2009-03-29 03:44:21 +0000
+++ b/NEWS	2009-03-29 23:52:11 +0000
@@ -86,6 +86,11 @@
   about what was being considered and what was being ignored.
   (Ian Clatworthy)
 
+* The ``long`` log formatter now shows [merge] indicators. If
+  only one level of revisions is displayed and merges are found,
+  the ``long`` and ``short`` log formatters now tell the user
+  how to see the hidden merged revisions.  (Ian Clatworthy)
+
 * Tildes are no longer escaped. No more %7Euser/project/branch!
   (Jonathan Lange)
 

=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py	2009-03-26 05:44:58 +0000
+++ b/bzrlib/log.py	2009-03-29 23:52:11 +0000
@@ -356,6 +356,7 @@
         generator = self._generator_factory(self.branch, rqst)
         for lr in generator.iter_log_revisions():
             lf.log_revision(lr)
+        lf.show_advice()
 
     def _generator_factory(self, branch, rqst):
         """Make the LogGenerator object to use.
@@ -1333,6 +1334,7 @@
             delta_format = 2 # long format
         self.delta_format = delta_format
         self.levels = levels
+        self._merge_count = 0
 
     def get_levels(self):
         """Get the number of levels to display or 0 for all."""
@@ -1350,6 +1352,19 @@
         """
         raise NotImplementedError('not implemented in abstract base')
 
+    def show_advice(self):
+        """Output user advice, if any, when the log is completed."""
+        if self.levels == 1 and self._merge_count > 0:
+            advice_sep = self.get_advice_separator()
+            if advice_sep:
+                self.to_file.write(advice_sep)
+            self.to_file.write(
+                "Use --levels 0 (or -n0) to see merged revisions.\n")
+
+    def get_advice_separator(self):
+        """Get the text separating the log from the closing advice."""
+        return ''
+
     def short_committer(self, rev):
         name, address = config.parse_username(rev.committer)
         if name:
@@ -1362,6 +1377,14 @@
             return name
         return address
 
+    def merge_marker(self, revision):
+        """Get the merge marker to include in the output or '' if none."""
+        if len(revision.rev.parent_ids) > 1:
+            self._merge_count += 1
+            return ' [merge]'
+        else:
+            return ''
+
     def show_properties(self, revision, indent):
         """Displays the custom properties returned by each registered handler.
 
@@ -1389,7 +1412,8 @@
         to_file = self.to_file
         to_file.write(indent + '-' * 60 + '\n')
         if revision.revno is not None:
-            to_file.write(indent + 'revno: %s\n' % (revision.revno,))
+            to_file.write(indent + 'revno: %s%s\n' % (revision.revno,
+                self.merge_marker(revision)))
         if revision.tags:
             to_file.write(indent + 'tags: %s\n' % (', '.join(revision.tags)))
         if self.show_ids:
@@ -1431,6 +1455,10 @@
             # revision information) so that the output can be fed to patch -p0
             self.show_diff(self.to_exact_file, revision.diff, indent)
 
+    def get_advice_separator(self):
+        """Get the text separating the log from the closing advice."""
+        return '-' * 60 + '\n'
+
 
 class ShortLogFormatter(LogFormatter):
 
@@ -1465,9 +1493,6 @@
         offset = ' ' * (revno_width + 1)
 
         to_file = self.to_file
-        is_merge = ''
-        if len(revision.rev.parent_ids) > 1:
-            is_merge = ' [merge]'
         tags = ''
         if revision.tags:
             tags = ' {%s}' % (', '.join(revision.tags))
@@ -1477,7 +1502,7 @@
                             revision.rev.timezone or 0,
                             self.show_timezone, date_fmt="%Y-%m-%d",
                             show_offset=False),
-                tags, is_merge))
+                tags, self.merge_marker(revision)))
         self.show_properties(revision.rev, indent+offset)
         if self.show_ids:
             to_file.write(indent + offset + 'revision-id:%s\n'

=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py	2009-03-26 05:41:59 +0000
+++ b/bzrlib/tests/blackbox/test_log.py	2009-03-29 02:35:13 +0000
@@ -341,14 +341,14 @@
         log = normalize_log(out)
         self.assertEqualDiff(log, """\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
 message:
   merge branch 1
     ------------------------------------------------------------
-    revno: 1.1.2
+    revno: 1.1.2 [merge]
     committer: Lorem Ipsum <test at example.com>
     branch nick: child
     timestamp: Just now
@@ -384,7 +384,7 @@
         log = normalize_log(out)
         self.assertEqualDiff(log, """\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
@@ -397,6 +397,8 @@
 timestamp: Just now
 message:
   first post
+------------------------------------------------------------
+Use --levels 0 (or -n0) to see merged revisions.
 """)
 
     def test_force_merge_revisions_on(self):
@@ -449,7 +451,7 @@
         log = normalize_log(out)
         self.assertEqualDiff(log, """\
 ------------------------------------------------------------
-revno: 1.1.2
+revno: 1.1.2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: child
 timestamp: Just now
@@ -471,7 +473,7 @@
         log = normalize_log(out)
         self.assertEqualDiff(log, """\
 ------------------------------------------------------------
-revno: 1.1.2
+revno: 1.1.2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: child
 timestamp: Just now
@@ -542,7 +544,7 @@
         log = normalize_log(out)
         self.assertEqualDiff(subst_dates(log), """\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
@@ -836,43 +838,43 @@
         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\n')
+        self.assertNotContainsRe(log, 'revno: 4 ')
         log = self.run_bzr('log 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\n')
+        self.assertContainsRe(log, 'revno: 4 ')
         log = self.run_bzr('log 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\n')
+        self.assertNotContainsRe(log, 'revno: 4 ')
         log = self.run_bzr('log -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\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\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\n')
+        self.assertContainsRe(log, 'revno: 4 ')
         log = self.run_bzr('log -r..3 file2')[0]
         self.assertNotContainsRe(log, 'revno: 1\n')
         self.assertContainsRe(log, 'revno: 2\n')
         self.assertNotContainsRe(log, 'revno: 3\n')
         self.assertNotContainsRe(log, 'revno: 3.1.1\n')
-        self.assertNotContainsRe(log, 'revno: 4\n')
+        self.assertNotContainsRe(log, 'revno: 4 ')
 
     def test_log_file_historical_missing(self):
         # Check logging a deleted file gives an error if the
@@ -892,7 +894,7 @@
         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\n')
+        self.assertContainsRe(log, 'revno: 4 ')
 
     def test_log_file_historical_start(self):
         # Check logging a deleted file is ok if the file existed
@@ -904,7 +906,7 @@
         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\n')
+        self.assertNotContainsRe(log, 'revno: 4 ')
 
     def test_log_file_renamed(self):
         """File matched against revision range, not current tree."""
@@ -922,7 +924,7 @@
         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\n')
+        self.assertNotContainsRe(log, 'revno: 4 ')
 
     def test_line_log_file(self):
         """The line log for a file should only list relevant mainline revs"""

=== modified file 'bzrlib/tests/test_log.py'
--- a/bzrlib/tests/test_log.py	2009-03-24 01:53:42 +0000
+++ b/bzrlib/tests/test_log.py	2009-03-29 02:35:13 +0000
@@ -541,14 +541,14 @@
         the_log = normalize_log(sio.getvalue())
         self.assertEqualDiff("""\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
 message:
   merge branch 1
     ------------------------------------------------------------
-    revno: 1.1.2
+    revno: 1.1.2 [merge]
     committer: Lorem Ipsum <test at example.com>
     branch nick: child
     timestamp: Just now
@@ -598,7 +598,7 @@
         the_log = normalize_log(sio.getvalue())
         self.assertEqualDiff("""\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
@@ -890,7 +890,7 @@
         the_log = normalize_log(sio.getvalue())
         self.assertEqualDiff("""\
 ------------------------------------------------------------
-revno: 2
+revno: 2 [merge]
 committer: Lorem Ipsum <test at example.com>
 branch nick: parent
 timestamp: Just now
@@ -910,6 +910,8 @@
 added:
   f1
   f2
+------------------------------------------------------------
+Use --levels 0 (or -n0) to see merged revisions.
 """,
                              the_log)
 




More information about the bazaar-commits mailing list