Rev 4321: (Jelmer) Add 'repository' hook to the info command. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri May 1 16:38:00 BST 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4321
revision-id: pqm at pqm.ubuntu.com-20090501153755-qk0x5oeclb231390
parent: pqm at pqm.ubuntu.com-20090501085103-kq2uocvhxzjex06k
parent: jelmer at samba.org-20090501142906-7zj8hcpp9igzuyi4
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2009-05-01 16:37:55 +0100
message:
(Jelmer) Add 'repository' hook to the info command.
modified:
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/info.py info.py-20050323235939-6bbfe7d9700b0b9b
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
------------------------------------------------------------
revno: 4307.3.3
revision-id: jelmer at samba.org-20090501142906-7zj8hcpp9igzuyi4
parent: jelmer at samba.org-20090429150140-4xgjet168wi97sg2
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: info-repository-extend
timestamp: Fri 2009-05-01 16:29:06 +0200
message:
Add repository argument to 'repository' info hook, per Roberts review.
modified:
bzrlib/info.py info.py-20050323235939-6bbfe7d9700b0b9b
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
------------------------------------------------------------
revno: 4307.3.2
revision-id: jelmer at samba.org-20090429150140-4xgjet168wi97sg2
parent: jelmer at samba.org-20090429145150-xmqfoqbocgnoum04
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: info-repository-extend
timestamp: Wed 2009-04-29 17:01:40 +0200
message:
Add tests for the repository info hook.
modified:
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
------------------------------------------------------------
revno: 4307.3.1
revision-id: jelmer at samba.org-20090429145150-xmqfoqbocgnoum04
parent: pqm at pqm.ubuntu.com-20090428004234-6j7ndsmvsx3hsrqo
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: info-repository-extend
timestamp: Wed 2009-04-29 16:51:50 +0200
message:
Allow registering hooks that extend the Repository section in 'bzr info -v'.
modified:
bzrlib/info.py info.py-20050323235939-6bbfe7d9700b0b9b
=== modified file 'bzrlib/hooks.py'
--- a/bzrlib/hooks.py 2009-04-07 10:41:30 +0000
+++ b/bzrlib/hooks.py 2009-04-29 15:01:40 +0000
@@ -41,6 +41,8 @@
'BzrDirHooks')
known_hooks.register_lazy(('bzrlib.commands', 'Command.hooks'),
'bzrlib.commands', 'CommandHooks')
+known_hooks.register_lazy(('bzrlib.info', 'hooks'),
+ 'bzrlib.info', 'InfoHooks')
known_hooks.register_lazy(('bzrlib.lock', 'Lock.hooks'), 'bzrlib.lock',
'LockHooks')
known_hooks.register_lazy(('bzrlib.msgeditor', 'hooks'), 'bzrlib.msgeditor',
=== modified file 'bzrlib/info.py'
--- a/bzrlib/info.py 2009-03-23 14:59:43 +0000
+++ b/bzrlib/info.py 2009-05-01 14:29:06 +0000
@@ -16,6 +16,7 @@
__all__ = ['show_bzrdir_info']
+from cStringIO import StringIO
import os
import time
import sys
@@ -24,6 +25,7 @@
bzrdir,
diff,
errors,
+ hooks as _mod_hooks,
osutils,
urlutils,
)
@@ -299,16 +301,20 @@
'the repository.\n')
-def _show_repository_stats(stats, outfile):
+def _show_repository_stats(repository, stats, outfile):
"""Show statistics about a repository."""
- if 'revisions' in stats or 'size' in stats:
- outfile.write('\n')
- outfile.write('Repository:\n')
+ f = StringIO()
if 'revisions' in stats:
revisions = stats['revisions']
- outfile.write(' %8d revision%s\n' % (revisions, plural(revisions)))
+ f.write(' %8d revision%s\n' % (revisions, plural(revisions)))
if 'size' in stats:
- outfile.write(' %8d KiB\n' % (stats['size']/1024))
+ f.write(' %8d KiB\n' % (stats['size']/1024))
+ for hook in hooks['repository']:
+ hook(repository, stats, f)
+ if f.getvalue() != "":
+ outfile.write('\n')
+ outfile.write('Repository:\n')
+ outfile.write(f.getvalue())
def show_bzrdir_info(a_bzrdir, verbose=False, outfile=None):
@@ -382,7 +388,7 @@
stats = repository.gather_stats()
if branch is None and working is None:
_show_repository_info(repository, outfile)
- _show_repository_stats(stats, outfile)
+ _show_repository_stats(repository, stats, outfile)
def describe_layout(repository=None, branch=None, tree=None):
@@ -472,3 +478,17 @@
# do.
candidates = new_candidates
return ' or '.join(candidates)
+
+
+class InfoHooks(_mod_hooks.Hooks):
+ """Hooks for the info command."""
+
+ def __init__(self):
+ self.create_hook(_mod_hooks.HookPoint('repository',
+ "Invoked when displaying the statistics for a repository. "
+ "repository is called with a statistics dictionary as returned "
+ "by the repository and a file-like object to write to.", (1, 15),
+ None))
+
+
+hooks = InfoHooks()
=== modified file 'bzrlib/tests/blackbox/test_info.py'
--- a/bzrlib/tests/blackbox/test_info.py 2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/blackbox/test_info.py 2009-05-01 14:29:06 +0000
@@ -1054,6 +1054,32 @@
), out)
self.assertEqual('', err)
+ def test_info_repository_hook(self):
+ format = bzrdir.format_registry.make_bzrdir('knit')
+ def repo_info(repo, stats, outf):
+ outf.write("more info\n")
+ info.hooks.install_named_hook('repository', repo_info, None)
+ # Create shared repository with working trees
+ repo = self.make_repository('repo', shared=True, format=format)
+ out, err = self.run_bzr('info -v repo')
+ self.assertEqualDiff(
+"""Shared repository with trees (format: dirstate or dirstate-tags or knit)
+Location:
+ shared repository: repo
+
+Format:
+ control: Meta directory format 1
+ repository: %s
+
+Create working tree for new branches inside the repository.
+
+Repository:
+ 0 revisions
+more info
+""" % (format.repository_format.get_format_description(),
+ ), out)
+ self.assertEqual('', err)
+
def assertCheckoutStatusOutput(self,
command_string, lco_tree, shared_repo=None,
repo_branch=None,
More information about the bazaar-commits
mailing list