Rev 2494: Merge log --limit (Kent Gibson) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Fri May 25 05:33:34 BST 2007


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

------------------------------------------------------------
revno: 2494
revision-id: pqm at pqm.ubuntu.com-20070525043332-aw7j04dvjy6ua1v9
parent: pqm at pqm.ubuntu.com-20070524165738-rzs9lvgoqk20vls9
parent: aaron.bentley at utoronto.ca-20070525040047-w4ymt5gvi3gecx1g
committer: Canonical.com Patch Queue Manager<pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2007-05-25 05:33:32 +0100
message:
  Merge log --limit (Kent Gibson)
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
    ------------------------------------------------------------
    revno: 2493.1.1
    merged: aaron.bentley at utoronto.ca-20070525040047-w4ymt5gvi3gecx1g
    parent: pqm at pqm.ubuntu.com-20070524165738-rzs9lvgoqk20vls9
    parent: warthog618 at gmail.com-20070505023239-2yrekc2wwgkpu6br
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: bzr.ab.integration
    timestamp: Fri 2007-05-25 00:00:47 -0400
    message:
      Merge log --limit (Kent Gibson)
    ------------------------------------------------------------
    revno: 2466.8.1.1.1
    merged: warthog618 at gmail.com-20070505023239-2yrekc2wwgkpu6br
    parent: warthog618 at gmail.com-20070429034630-p3xbitz2xyl6pbie
    committer: Kent Gibson <warthog618 at gmail.com>
    branch nick: log_limit
    timestamp: Sat 2007-05-05 10:32:39 +0800
    message:
      add bzr log --limit
=== modified file 'NEWS'
--- a/NEWS	2007-05-24 15:26:41 +0000
+++ b/NEWS	2007-05-25 04:00:47 +0000
@@ -14,6 +14,9 @@
       attempt to explain these concepts. (James Westby, John Arbash Meinel,
       Aaron Bentley)
 
+    * Added ``bzr log --limit`` to report a limited number of revisions.
+      (Kent Gibson, #3659)
+
   BUGFIXES:
 
     * ``bzr push`` should only connect to the remote location one time.

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2007-05-24 15:26:41 +0000
+++ b/bzrlib/builtins.py	2007-05-25 04:00:47 +0000
@@ -1563,6 +1563,14 @@
         self.outf.write(tree.basedir + '\n')
 
 
+def _parse_limit(limitstring):
+    try:
+        return int(limitstring)
+    except ValueError:
+        msg = "The limit argument must be an integer."
+        raise errors.BzrCommandError(msg)
+
+
 class cmd_log(Command):
     """Show log of a branch, file, or directory.
 
@@ -1593,6 +1601,9 @@
                             short_name='m',
                             help='show revisions whose message matches this regexp',
                             type=str),
+                     Option('limit', 
+                            help='limit the output to the first N revisions',
+                            type=_parse_limit),
                      ]
     encoding_type = 'replace'
 
@@ -1603,7 +1614,8 @@
             forward=False,
             revision=None,
             log_format=None,
-            message=None):
+            message=None,
+            limit=None):
         from bzrlib.log import show_log
         assert message is None or isinstance(message, basestring), \
             "invalid message argument %r" % message
@@ -1684,7 +1696,8 @@
                      direction=direction,
                      start_revision=rev1,
                      end_revision=rev2,
-                     search=message)
+                     search=message,
+                     limit=limit)
         finally:
             b.unlock()
 

=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py	2007-05-24 12:42:24 +0000
+++ b/bzrlib/log.py	2007-05-25 04:00:47 +0000
@@ -132,7 +132,8 @@
              direction='reverse',
              start_revision=None,
              end_revision=None,
-             search=None):
+             search=None,
+             limit=None):
     """Write out human-readable log of commits to this branch.
 
     lf
@@ -154,6 +155,12 @@
 
     end_revision
         If not None, only show revisions <= end_revision
+
+    search
+        If not None, only show revisions with matching commit messages
+
+    limit
+        If not None or 0, only show limit revisions
     """
     branch.lock_read()
     try:
@@ -161,7 +168,7 @@
             lf.begin_log()
 
         _show_log(branch, lf, specific_fileid, verbose, direction,
-                  start_revision, end_revision, search)
+                  start_revision, end_revision, search, limit)
 
         if getattr(lf, 'end_log', None):
             lf.end_log()
@@ -175,7 +182,8 @@
              direction='reverse',
              start_revision=None,
              end_revision=None,
-             search=None):
+             search=None,
+             limit=None):
     """Worker function for show_log - see show_log."""
     from bzrlib.osutils import format_date
     from bzrlib.errors import BzrCheckError
@@ -282,6 +290,7 @@
             num = min(int(num * 1.5), 200)
 
     # now we just print all the revisions
+    log_count = 0
     for ((rev_id, revno, merge_depth), (rev, delta)) in \
          izip(view_revisions, iter_revisions()):
 
@@ -309,6 +318,10 @@
                                             rev_tag_dict.get(rev_id))
                     else:
                         lf.show_merge_revno(rev, merge_depth, revno)
+        if limit:
+            log_count += 1
+            if log_count >= limit:
+                break
 
 
 def _get_revisions_touching_file_id(branch, file_id, mainline_revisions,

=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py	2007-04-23 19:23:14 +0000
+++ b/bzrlib/tests/blackbox/test_log.py	2007-05-05 02:32:39 +0000
@@ -148,6 +148,13 @@
         log = self.runbzr("log -r-1")[0]
         self.assertContainsRe(log, r'    tags: tag1')
 
+    def test_log_limit(self):
+        self._prepare()
+        log = self.runbzr("log --limit 2")[0]
+        self.assertTrue('revno: 1\n' not in log)
+        self.assertTrue('revno: 2\n' in log)
+        self.assertTrue('revno: 3\n' in log)
+
 
 class TestLogMerges(ExternalBase):
 




More information about the bazaar-commits mailing list