Rev 4255: (Jelmer) Allow hooks to add new entries to version-info. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Mon Apr 6 04:45:28 BST 2009


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

------------------------------------------------------------
revno: 4255
revision-id: pqm at pqm.ubuntu.com-20090406034525-r4sia7j57isnjr0h
parent: pqm at pqm.ubuntu.com-20090406024730-9559ntr7fvmgug6r
parent: jelmer at samba.org-20090406025448-6rq2tw8zpqwrlfwe
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2009-04-06 04:45:25 +0100
message:
  (Jelmer) Allow hooks to add new entries to version-info.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/hooks.py                hooks.py-20070325015548-ix4np2q0kd8452au-1
  bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
  bzrlib/version_info_formats/format_rio.py format_rio.py-20060809202444-ike7i9ub03gb432p-2
    ------------------------------------------------------------
    revno: 4216.4.4
    revision-id: jelmer at samba.org-20090406025448-6rq2tw8zpqwrlfwe
    parent: jelmer at samba.org-20090406025414-65tpjwcmjp5wa5oj
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: versioninfo
    timestamp: Mon 2009-04-06 04:54:48 +0200
    message:
      Set 'revision' hook as introduced in 1.15.
    modified:
      bzrlib/version_info_formats/format_rio.py format_rio.py-20060809202444-ike7i9ub03gb432p-2
    ------------------------------------------------------------
    revno: 4216.4.3
    revision-id: jelmer at samba.org-20090406025414-65tpjwcmjp5wa5oj
    parent: jelmer at samba.org-20090406023152-o28nfues04mh7d8j
    parent: pqm at pqm.ubuntu.com-20090404000810-fqvkqdjx9s1h9ks3
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: versioninfo
    timestamp: Mon 2009-04-06 04:54:14 +0200
    message:
      Merge bzr.dev.
    removed:
      bzrlib/tests/blackbox/test_guess_renames.py test_guess_renames.p-20090312063936-bqdtxr0r3md3jc00-1
    added:
      bzrlib/filters/eol.py          eol.py-20090327060429-todzdjmqt3bpv5r8-1
      bzrlib/help_topics/en/eol.txt  eol.txt-20090327060429-todzdjmqt3bpv5r8-3
      bzrlib/inventory_delta.py      journalled_inventory-20080103020931-0ht5n40kwc0p7fy1-1
      bzrlib/serializer.py           serializer.py-20090402143702-wmkh9cfjhwpju0qi-1
      bzrlib/tests/bzrdir_implementations/test_push.py test_push.py-20090403142358-xnn0wtsk3gx238ot-1
      bzrlib/tests/test_eol_filters.py test_eol_filters.py-20090327060429-todzdjmqt3bpv5r8-2
      bzrlib/tests/test_inventory_delta.py test_journalled_inv.-20080103012121-ny2w9slze5jgty8i-1
      bzrlib/tests/test_serializer.py test_serializer.py-20090403213933-q6x117y8t9fbeyoz-1
      bzrlib/tests/workingtree_implementations/test_eol_conversion.py test_eol_conversion.-20090327060429-todzdjmqt3bpv5r8-4
      doc/developers/groupcompress-design.txt design-20080705181503-ccbxd6xuy1bdnrpu-2
    modified:
      .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/help_topics/en/rules.txt rules.txt-20080516063844-ghr5l6pvvrhiycun-1
      bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
      bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
      bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
      bzrlib/push.py                 push.py-20080606021927-5fe39050e8xne9un-1
      bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/rename_map.py           rename_map.py-20090312140439-xexkkmjlg2enbohc-1
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
      bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
      bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
      bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
      bzrlib/tests/blackbox/test_filtered_view_ops.py test_filtered_view_o-20081110012645-5t7ogtola0l33lkg-1
      bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
      bzrlib/tests/blackbox/test_mv.py test_mv.py-20060705114902-33tkxz0o9cdshemo-1
      bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
      bzrlib/tests/blackbox/test_view.py test_view.py-20080731135100-66o8o32heop7augi-1
      bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
      bzrlib/tests/per_repository/test_add_inventory_by_delta.py test_add_inventory_d-20081013002626-rut81igtlqb4590z-1
      bzrlib/tests/per_repository/test_check.py test_check.py-20070824124512-38g4d135gcqxo4zb-1
      bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
      bzrlib/tests/per_repository_reference/test_add_inventory.py test_add_inventory.p-20080220025549-nnm2s80it1lvcwnc-3
      bzrlib/tests/per_repository_reference/test_add_revision.py test_add_revision.py-20080220034108-ao1u8qgakqbo5a08-1
      bzrlib/tests/per_repository_reference/test_add_signature_text.py test_add_signature_t-20080220041905-1j2g4lyz3c6h34v4-1
      bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
      bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
      bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
      bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
      bzrlib/tests/test_rename_map.py test_rename_map.py-20090312140439-xexkkmjlg2enbohc-2
      bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
      bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
      bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
      bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
      bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/ui/__init__.py          ui.py-20050824083933-8cf663c763ba53a9
      bzrlib/ui/text.py              text.py-20051130153916-2e438cffc8afc478
      bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
      bzrlib/version_info_formats/format_python.py format_python.py-20060809202444-ike7i9ub03gb432p-1
      bzrlib/version_info_formats/format_rio.py format_rio.py-20060809202444-ike7i9ub03gb432p-2
      bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
      bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
      bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
      bzrlib/xml8.py                 xml5.py-20050907032657-aac8f960815b66b1
      bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
      doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
      doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
      doc/developers/inventory.txt   inventory.txt-20080103013957-opkrhxy6lmywmx4i-1
      doc/en/user-guide/filtered_views.txt filtered_views.txt-20090226100856-a16ba1v97v91ru58-1
      doc/en/user-guide/svn_plugin.txt svn_plugin.txt-20080509065016-cjc90f46407vi9a0-2
      tools/win32/build_release.py   build_release.py-20081105204355-2ghh5cv01v1x4rzz-1
    ------------------------------------------------------------
    revno: 4216.4.2
    revision-id: jelmer at samba.org-20090406023152-o28nfues04mh7d8j
    parent: jelmer at samba.org-20090403204723-i4zh6ryhr3010n73
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: versioninfo
    timestamp: Mon 2009-04-06 04:31:52 +0200
    message:
      Register RioVersionInfoBuilderHooks in the hooks registry.
    modified:
      bzrlib/hooks.py                hooks.py-20070325015548-ix4np2q0kd8452au-1
      bzrlib/version_info_formats/format_rio.py format_rio.py-20060809202444-ike7i9ub03gb432p-2
    ------------------------------------------------------------
    revno: 4216.4.1
    revision-id: jelmer at samba.org-20090403204723-i4zh6ryhr3010n73
    parent: pqm at pqm.ubuntu.com-20090330055028-lhmncpzf7ebkd2yc
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: versioninfo
    timestamp: Fri 2009-04-03 22:47:23 +0200
    message:
      Allow hooks to add new entries to version-info.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
      bzrlib/version_info_formats/format_rio.py format_rio.py-20060809202444-ike7i9ub03gb432p-2
=== modified file 'NEWS'
--- a/NEWS	2009-04-03 23:18:11 +0000
+++ b/NEWS	2009-04-06 02:54:14 +0000
@@ -289,6 +289,10 @@
   objects, allowing better enforcement of the smart server jail when
   dealing with stacked branches. (Robert Collins, Andrew Bennetts)
 
+* New hook ``RioVersionInfoBuilder.revision``, allowing extra entries 
+  to be added to the stanza that is printed for a particular revision.
+  (Jelmer Vernooij)
+
 * New repository method ``refresh_data`` to cause any repository to
   make visible data inserted into the repository by a smart server
   fetch operation. (Robert Collins, Andrew Bennetts)

=== modified file 'bzrlib/hooks.py'
--- a/bzrlib/hooks.py	2009-03-24 01:53:42 +0000
+++ b/bzrlib/hooks.py	2009-04-06 02:31:52 +0000
@@ -45,6 +45,9 @@
     'bzrlib.smart.client', 'SmartClientHooks')
 known_hooks.register_lazy(('bzrlib.smart.server', 'SmartTCPServer.hooks'),
     'bzrlib.smart.server', 'SmartServerHooks')
+known_hooks.register_lazy(
+    ('bzrlib.version_info_formats.format_rio', 'RioVersionInfoBuilder.hooks'),
+    'bzrlib.version_info_formats.format_rio', 'RioVersionInfoBuilderHooks')
 
 
 def known_hooks_key_to_object((module_name, member_name)):

=== modified file 'bzrlib/tests/test_version_info.py'
--- a/bzrlib/tests/test_version_info.py	2009-04-03 21:23:55 +0000
+++ b/bzrlib/tests/test_version_info.py	2009-04-06 02:54:14 +0000
@@ -96,6 +96,26 @@
         self.assertContainsRe(val, 'id: r3')
         self.assertContainsRe(val, 'message: \xc3\xa52') # utf8 encoding '\xe5'
 
+    def test_rio_version_hook(self):
+        def update_stanza(rev, stanza):
+            stanza.add('bla', 'bloe')
+        RioVersionInfoBuilder.hooks.install_named_hook(
+            'revision', update_stanza, None)
+        wt = self.create_branch()
+
+        def regen(**kwargs):
+            sio = StringIO()
+            builder = RioVersionInfoBuilder(wt.branch, working_tree=wt,
+                                            **kwargs)
+            builder.generate(sio)
+            sio.seek(0)
+            stanzas = list(read_stanzas(sio))
+            self.assertEqual(1, len(stanzas))
+            return stanzas[0]
+
+        stanza = regen()
+        self.assertEqual(['bloe'], stanza.get_all('bla'))
+
     def test_rio_version(self):
         wt = self.create_branch()
 

=== modified file 'bzrlib/version_info_formats/format_rio.py'
--- a/bzrlib/version_info_formats/format_rio.py	2009-04-03 21:23:55 +0000
+++ b/bzrlib/version_info_formats/format_rio.py	2009-04-06 02:54:48 +0000
@@ -16,6 +16,7 @@
 
 """A generator which creates a rio stanza of the current tree info"""
 
+from bzrlib import hooks
 from bzrlib.revision import (
     NULL_REVISION,
     )
@@ -38,6 +39,8 @@
             rev = self._branch.repository.get_revision(revision_id)
             info.add('date', create_date_str(rev.timestamp, rev.timezone))
             revno = str(self._branch.revision_id_to_revno(revision_id))
+            for hook in RioVersionInfoBuilder.hooks['revision']:
+                hook(rev, info)
         else:
             revno = '0'
 
@@ -77,3 +80,13 @@
         writer.write_stanza(info)
 
 
+class RioVersionInfoBuilderHooks(hooks.Hooks):
+    """Hooks for rio-formatted version-info output."""
+
+    def __init__(self):
+        self.create_hook(hooks.HookPoint('revision',
+            "Invoked when adding information about a revision to the"
+            " RIO stanza that is printed. revision is called with a"
+            " revision object and a RIO stanza.", (1, 15), None))
+
+RioVersionInfoBuilder.hooks = RioVersionInfoBuilderHooks()




More information about the bazaar-commits mailing list