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