Rev 5128: (mbp) lazy-load more commands in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Apr 1 10:03:23 BST 2010


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

------------------------------------------------------------
revno: 5128 [merge]
revision-id: pqm at pqm.ubuntu.com-20100401090321-bzh43emrsqtfdne7
parent: pqm at pqm.ubuntu.com-20100401004031-pc7s84z6ahqunmy2
parent: mbp at sourcefrog.net-20100401081907-lkfjanyy3catylnb
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2010-04-01 10:03:21 +0100
message:
  (mbp) lazy-load more commands
modified:
  .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
  bzrlib/tests/test_import_tariff.py test_import_tariff.p-20100207155145-ff9infp7goncs7zh-1
=== modified file '.bzrignore'
--- a/.bzrignore	2009-10-07 15:48:32 +0000
+++ b/.bzrignore	2010-04-01 04:41:18 +0000
@@ -67,3 +67,4 @@
 bzrlib/_*.so
 bzrlib/_*.pyd
 ./.ccache
+.testrepository

=== modified file 'NEWS'
--- a/NEWS	2010-04-01 00:40:31 +0000
+++ b/NEWS	2010-04-01 08:19:07 +0000
@@ -5,6 +5,40 @@
 .. contents:: List of Releases
    :depth: 1
 
+bzr 2.2b2
+#########
+
+:2.2b2: NOT RELEASED YET
+
+Compatibility Breaks
+********************
+
+New Features
+************
+
+Bug Fixes
+*********
+
+Improvements
+************
+
+* Less code is loaded at startup.  (Cold-cache start time is about 10-20%
+  less.)
+  (Martin Pool, #553017)
+
+Documentation
+*************
+
+API Changes
+***********
+
+Internals
+*********
+
+Testing
+*******
+
+
 bzr 2.2.0b1
 ###########
 

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2010-03-29 06:37:23 +0000
+++ b/bzrlib/builtins.py	2010-04-01 04:38:26 +0000
@@ -60,7 +60,11 @@
 from bzrlib.workingtree import WorkingTree
 """)
 
-from bzrlib.commands import Command, display_command
+from bzrlib.commands import (
+    Command,
+    builtin_command_registry,
+    display_command,
+    )
 from bzrlib.option import (
     ListOption,
     Option,
@@ -4062,6 +4066,7 @@
 
     def run(self, file_list=None, merge_type=None, show_base=False,
             reprocess=False):
+        from bzrlib.conflicts import restore
         if merge_type is None:
             merge_type = _mod_merge.Merge3Merger
         tree, file_list = tree_files(file_list)
@@ -5975,7 +5980,15 @@
             self.outf.write('%s %s\n' % (path, location))
 
 
-from bzrlib.cmd_version_info import cmd_version_info
-from bzrlib.conflicts import cmd_resolve, cmd_conflicts, restore
-from bzrlib.foreign import cmd_dpush
-from bzrlib.sign_my_commits import cmd_sign_my_commits
+def _register_lazy_builtins():
+    # register lazy builtins from other modules; called at startup and should
+    # be only called once.
+    for (name, aliases, module_name) in [
+        ('cmd_bundle_info', [], 'bzrlib.bundle.commands'),
+        ('cmd_dpush', [], 'bzrlib.foreign'),
+        ('cmd_version_info', [], 'bzrlib.cmd_version_info'),
+        ('cmd_resolve', ['resolved'], 'bzrlib.conflicts'),
+        ('cmd_conflicts', [], 'bzrlib.conflicts'),
+        ('cmd_sign_my_commits', [], 'bzrlib.sign_my_commits'),
+        ]:
+        builtin_command_registry.register_lazy(name, aliases, module_name)

=== modified file 'bzrlib/commands.py'
--- a/bzrlib/commands.py	2010-03-25 06:52:38 +0000
+++ b/bzrlib/commands.py	2010-04-01 03:52:41 +0000
@@ -182,10 +182,7 @@
     import bzrlib.builtins
     for cmd_class in _scan_module_for_commands(bzrlib.builtins).values():
         builtin_command_registry.register(cmd_class)
-    # lazy builtins
-    builtin_command_registry.register_lazy('cmd_bundle_info',
-        [],
-        'bzrlib.bundle.commands')
+    bzrlib.builtins._register_lazy_builtins()
 
 
 def _scan_module_for_commands(module):

=== modified file 'bzrlib/tests/test_import_tariff.py'
--- a/bzrlib/tests/test_import_tariff.py	2010-03-23 06:03:14 +0000
+++ b/bzrlib/tests/test_import_tariff.py	2010-04-01 04:38:26 +0000
@@ -91,8 +91,15 @@
         self.make_branch_and_tree('.')
         self.run_command_check_imports(['st'], [
             'bzrlib.bundle.commands',
+            'bzrlib.cmd_version_info',
+            'bzrlib.foreign',
             'bzrlib.remote',
+            'bzrlib.sign_my_commits',
             'bzrlib.smart',
             'smtplib',
             'tarfile',
             ])
+        # TODO: similar test for repository-only operations, checking we avoid
+        # loading wt-specific stuff
+        #
+        # See https://bugs.edge.launchpad.net/bzr/+bug/553017




More information about the bazaar-commits mailing list