60
60
from bzrlib.workingtree import WorkingTree
63
from bzrlib.commands import Command, display_command
63
from bzrlib.commands import (
65
builtin_command_registry,
64
68
from bzrlib.option import (
330
334
class cmd_cat_revision(Command):
331
"""Write out metadata for a revision.
335
__doc__ = """Write out metadata for a revision.
333
337
The revision to print can either be specified by a specific
334
338
revision identifier, or you can use --revision.
388
392
class cmd_dump_btree(Command):
389
"""Dump the contents of a btree index file to stdout.
393
__doc__ = """Dump the contents of a btree index file to stdout.
391
395
PATH is a btree index file, it can be any URL. This includes things like
392
396
.bzr/repository/pack-names, or .bzr/repository/indices/a34b3a...ca4a4.iix
500
504
if (working.has_changes()):
501
505
raise errors.UncommittedChanges(working)
503
working_path = working.bzrdir.root_transport.base
504
branch_path = working.branch.bzrdir.root_transport.base
505
if working_path != branch_path:
507
if working.user_url != working.branch.user_url:
506
508
raise errors.BzrCommandError("You cannot remove the working tree"
507
509
" from a lightweight checkout")
985
987
tree_to = WorkingTree.open_containing(directory)[0]
986
988
branch_to = tree_to.branch
990
self.add_cleanup(tree_to.unlock)
987
991
except errors.NoWorkingTree:
989
993
branch_to = Branch.open_containing(directory)[0]
994
branch_to.lock_write()
995
self.add_cleanup(branch_to.unlock)
991
997
if local and not branch_to.get_bound_location():
992
998
raise errors.LocalRequiresBoundBranch()
1024
1030
branch_from = Branch.open(location,
1025
1031
possible_transports=possible_transports)
1032
branch_from.lock_read()
1033
self.add_cleanup(branch_from.unlock)
1027
1035
if branch_to.get_parent() is None or remember:
1028
1036
branch_to.set_parent(branch_from.base)
1030
if branch_from is not branch_to:
1031
branch_from.lock_read()
1032
self.add_cleanup(branch_from.unlock)
1033
1038
if revision is not None:
1034
1039
revision_id = revision.as_revision_id(branch_from)
1036
branch_to.lock_write()
1037
self.add_cleanup(branch_to.unlock)
1038
1041
if tree_to is not None:
1039
1042
view_info = _get_view_info_for_change_reporter(tree_to)
1040
1043
change_reporter = delta._ChangeReporter(
1122
1125
# Get the source branch
1123
1126
(tree, br_from,
1124
1127
_unused) = bzrdir.BzrDir.open_containing_tree_or_branch(directory)
1126
strict = br_from.get_config().get_user_option_as_bool('push_strict')
1127
if strict is None: strict = True # default value
1128
1128
# Get the tip's revision_id
1129
1129
revision = _get_one_revision('push', revision)
1130
1130
if revision is not None:
1131
1131
revision_id = revision.in_history(br_from).rev_id
1133
1133
revision_id = None
1134
if strict and tree is not None and revision_id is None:
1135
if (tree.has_changes()):
1136
raise errors.UncommittedChanges(
1137
tree, more='Use --no-strict to force the push.')
1138
if tree.last_revision() != tree.branch.last_revision():
1139
# The tree has lost sync with its branch, there is little
1140
# chance that the user is aware of it but he can still force
1141
# the push with --no-strict
1142
raise errors.OutOfDateTree(
1143
tree, more='Use --no-strict to force the push.')
1134
if tree is not None and revision_id is None:
1135
tree.check_changed_or_out_of_date(
1136
strict, 'push_strict',
1137
more_error='Use --no-strict to force the push.',
1138
more_warning='Uncommitted changes will not be pushed.')
1145
1139
# Get the stacked_on branch, if any
1146
1140
if stacked_on is not None:
1147
1141
stacked_on = urlutils.normalize_url(stacked_on)
1181
1175
class cmd_branch(Command):
1182
"""Create a new branch that is a copy of an existing branch.
1176
__doc__ = """Create a new branch that is a copy of an existing branch.
1184
1178
If the TO_LOCATION is omitted, the last component of the FROM_LOCATION will
1185
1179
be used. In other words, "branch ../foo/bar" will attempt to create ./bar.
1294
1288
class cmd_checkout(Command):
1295
"""Create a new checkout of an existing branch.
1289
__doc__ = """Create a new checkout of an existing branch.
1297
1291
If BRANCH_LOCATION is omitted, checkout will reconstitute a working tree for
1298
1292
the branch found in '.'. This is useful if you have removed the working tree
1395
1389
class cmd_update(Command):
1396
"""Update a tree to have the latest code committed to its branch.
1390
__doc__ = """Update a tree to have the latest code committed to its branch.
1398
1392
This will perform a merge into the working tree, and may generate
1399
1393
conflicts. If you have any local changes, you will still
1445
1439
revision_id = branch.last_revision()
1446
1440
if revision_id == _mod_revision.ensure_null(tree.last_revision()):
1447
revno = branch.revision_id_to_revno(revision_id)
1448
note("Tree is up to date at revision %d of branch %s" %
1449
(revno, branch_location))
1441
revno = branch.revision_id_to_dotted_revno(revision_id)
1442
note("Tree is up to date at revision %s of branch %s" %
1443
('.'.join(map(str, revno)), branch_location))
1451
1445
view_info = _get_view_info_for_change_reporter(tree)
1452
1446
change_reporter = delta._ChangeReporter(
1464
1458
"bzr update --revision only works"
1465
1459
" for a revision in the branch history"
1466
1460
% (e.revision))
1467
revno = tree.branch.revision_id_to_revno(
1461
revno = tree.branch.revision_id_to_dotted_revno(
1468
1462
_mod_revision.ensure_null(tree.last_revision()))
1469
note('Updated to revision %d of branch %s' %
1470
(revno, branch_location))
1471
if tree.get_parent_ids()[1:] != existing_pending_merges:
1463
note('Updated to revision %s of branch %s' %
1464
('.'.join(map(str, revno)), branch_location))
1465
parent_ids = tree.get_parent_ids()
1466
if parent_ids[1:] and parent_ids[1:] != existing_pending_merges:
1472
1467
note('Your local commits will now show as pending merges with '
1473
1468
"'bzr status', and can be committed with 'bzr commit'.")
1474
1469
if conflicts != 0:
1480
1475
class cmd_info(Command):
1481
"""Show information about a working tree, branch or repository.
1476
__doc__ = """Show information about a working tree, branch or repository.
1483
1478
This command will show all known locations and formats associated to the
1484
1479
tree, branch or repository.
1578
1573
class cmd_file_id(Command):
1579
"""Print file_id of a particular file or directory.
1574
__doc__ = """Print file_id of a particular file or directory.
1581
1576
The file_id is assigned when the file is first added and remains the
1582
1577
same through all revisions where the file exists, even when it is
1600
1595
class cmd_file_path(Command):
1601
"""Print path of file_ids to a file or directory.
1596
__doc__ = """Print path of file_ids to a file or directory.
1603
1598
This prints one line for each directory down to the target,
1604
1599
starting at the branch root.
1666
1661
class cmd_ancestry(Command):
1667
"""List all revisions merged into this branch."""
1662
__doc__ = """List all revisions merged into this branch."""
1669
1664
_see_also = ['log', 'revision-history']
1670
1665
takes_args = ['location?']
1800
1795
class cmd_init_repository(Command):
1801
"""Create a shared repository for branches to share storage space.
1796
__doc__ = """Create a shared repository for branches to share storage space.
1803
1798
New branches created under the repository directory will store their
1804
1799
revisions in the repository, not in the branch directory. For branches
1860
1855
class cmd_diff(Command):
1861
"""Show differences in the working tree, between revisions or branches.
1856
__doc__ = """Show differences in the working tree, between revisions or branches.
1863
1858
If no arguments are given, all changes for the current tree are listed.
1864
1859
If files are given, only the changes in those files are listed.
1950
1945
help='Use this command to compare files.',
1948
RegistryOption('format',
1949
help='Diff format to use.',
1950
lazy_registry=('bzrlib.diff', 'format_registry'),
1951
value_switches=False, title='Diff format'),
1954
1953
aliases = ['di', 'dif']
1955
1954
encoding_type = 'exact'
1957
1956
@display_command
1958
1957
def run(self, revision=None, file_list=None, diff_options=None,
1959
prefix=None, old=None, new=None, using=None):
1960
from bzrlib.diff import get_trees_and_branches_to_diff, show_diff_trees
1958
prefix=None, old=None, new=None, using=None, format=None):
1959
from bzrlib.diff import (get_trees_and_branches_to_diff_locked,
1962
1962
if (prefix is None) or (prefix == '0'):
1963
1963
# diff -p0 format
1977
1977
raise errors.BzrCommandError('bzr diff --revision takes exactly'
1978
1978
' one or two revision specifiers')
1980
if using is not None and format is not None:
1981
raise errors.BzrCommandError('--using and --format are mutually '
1980
1984
(old_tree, new_tree,
1981
1985
old_branch, new_branch,
1982
specific_files, extra_trees) = get_trees_and_branches_to_diff(
1983
file_list, revision, old, new, apply_view=True)
1986
specific_files, extra_trees) = get_trees_and_branches_to_diff_locked(
1987
file_list, revision, old, new, self.add_cleanup, apply_view=True)
1984
1988
return show_diff_trees(old_tree, new_tree, sys.stdout,
1985
1989
specific_files=specific_files,
1986
1990
external_diff_options=diff_options,
1987
1991
old_label=old_label, new_label=new_label,
1988
extra_trees=extra_trees, using=using)
1992
extra_trees=extra_trees, using=using,
1991
1996
class cmd_deleted(Command):
1992
"""List files deleted in the working tree.
1997
__doc__ = """List files deleted in the working tree.
1994
1999
# TODO: Show files deleted since a previous revision, or
1995
2000
# between two revisions.
2294
2299
help='Show changes made in each revision as a patch.'),
2295
2300
Option('include-merges',
2296
2301
help='Show merged revisions like --levels 0 does.'),
2302
Option('exclude-common-ancestry',
2303
help='Display only the revisions that are not part'
2304
' of both ancestries (require -rX..Y)'
2298
2307
encoding_type = 'replace'
2311
2320
show_diff=False,
2312
include_merges=False):
2321
include_merges=False,
2322
exclude_common_ancestry=False,
2313
2324
from bzrlib.log import (
2315
2326
make_log_request_dict,
2316
2327
_get_info_for_log_files,
2318
2329
direction = (forward and 'forward') or 'reverse'
2330
if (exclude_common_ancestry
2331
and (revision is None or len(revision) != 2)):
2332
raise errors.BzrCommandError(
2333
'--exclude-common-ancestry requires -r with two revisions')
2319
2334
if include_merges:
2320
2335
if levels is None:
2414
2429
direction=direction, specific_fileids=file_ids,
2415
2430
start_revision=rev1, end_revision=rev2, limit=limit,
2416
2431
message_search=message, delta_type=delta_type,
2417
diff_type=diff_type, _match_using_deltas=match_using_deltas)
2432
diff_type=diff_type, _match_using_deltas=match_using_deltas,
2433
exclude_common_ancestry=exclude_common_ancestry,
2418
2435
Logger(b, rqst).show(lf)
2644
2661
using this command or directly by using an editor, be sure to commit
2664
Bazaar also supports a global ignore file ~/.bazaar/ignore. On Windows
2665
the global ignore file can be found in the application data directory as
2666
C:\\Documents and Settings\\<user>\\Application Data\\Bazaar\\2.0\\ignore.
2667
Global ignores are not touched by this command. The global ignore file
2668
can be edited directly using an editor.
2647
2670
Patterns prefixed with '!' are exceptions to ignore patterns and take
2648
2671
precedence over regular ignores. Such exceptions are used to specify
2649
2672
files that should be versioned which would otherwise be ignored.
2690
2713
_see_also = ['status', 'ignored', 'patterns']
2691
2714
takes_args = ['name_pattern*']
2692
2715
takes_options = [
2693
Option('old-default-rules',
2694
help='Write out the ignore rules bzr < 0.9 always used.')
2716
Option('default-rules',
2717
help='Display the default ignore rules that bzr uses.')
2697
def run(self, name_pattern_list=None, old_default_rules=None):
2720
def run(self, name_pattern_list=None, default_rules=None):
2698
2721
from bzrlib import ignores
2699
if old_default_rules is not None:
2700
# dump the rules and exit
2701
for pattern in ignores.OLD_DEFAULTS:
2722
if default_rules is not None:
2723
# dump the default rules and exit
2724
for pattern in ignores.USER_DEFAULTS:
2702
2725
self.outf.write("%s\n" % pattern)
2704
2727
if not name_pattern_list:
2705
2728
raise errors.BzrCommandError("ignore requires at least one "
2706
"NAME_PATTERN or --old-default-rules")
2729
"NAME_PATTERN or --default-rules.")
2707
2730
name_pattern_list = [globbing.normalize_pattern(p)
2708
2731
for p in name_pattern_list]
2709
2732
for name_pattern in name_pattern_list:
3050
3073
"the master branch until a normal commit "
3051
3074
"is performed."
3076
Option('show-diff', short_name='p',
3054
3077
help='When no message is supplied, show the diff along'
3055
3078
' with the status summary in the message editor.'),
3136
3159
'(use --file "%(f)s" to take commit message from that file)'
3137
3160
% { 'f': message })
3138
3161
ui.ui_factory.show_warning(warning_msg)
3163
message = message.replace('\r\n', '\n')
3164
message = message.replace('\r', '\n')
3166
raise errors.BzrCommandError(
3167
"please specify either --message or --file")
3140
3169
def get_message(commit_obj):
3141
3170
"""Callback to get commit message"""
3142
my_message = message
3143
if my_message is not None and '\r' in my_message:
3144
my_message = my_message.replace('\r\n', '\n')
3145
my_message = my_message.replace('\r', '\n')
3146
if my_message is None and not file:
3147
t = make_commit_message_template_encoded(tree,
3172
my_message = codecs.open(
3173
file, 'rt', osutils.get_user_encoding()).read()
3174
elif message is not None:
3175
my_message = message
3177
# No message supplied: make one up.
3178
# text is the status of the tree
3179
text = make_commit_message_template_encoded(tree,
3148
3180
selected_list, diff=show_diff,
3149
3181
output_encoding=osutils.get_user_encoding())
3182
# start_message is the template generated from hooks
3183
# XXX: Warning - looks like hooks return unicode,
3184
# make_commit_message_template_encoded returns user encoding.
3185
# We probably want to be using edit_commit_message instead to
3150
3187
start_message = generate_commit_message_template(commit_obj)
3151
my_message = edit_commit_message_encoded(t,
3188
my_message = edit_commit_message_encoded(text,
3152
3189
start_message=start_message)
3153
3190
if my_message is None:
3154
3191
raise errors.BzrCommandError("please specify a commit"
3155
3192
" message with either --message or --file")
3156
elif my_message and file:
3157
raise errors.BzrCommandError(
3158
"please specify either --message or --file")
3160
my_message = codecs.open(file, 'rt',
3161
osutils.get_user_encoding()).read()
3162
3193
if my_message == "":
3163
3194
raise errors.BzrCommandError("empty commit message specified")
3164
3195
return my_message
3176
3207
timezone=offset,
3177
3208
exclude=safe_relpath_files(tree, exclude))
3178
3209
except PointlessCommit:
3179
# FIXME: This should really happen before the file is read in;
3180
# perhaps prepare the commit; get the message; then actually commit
3181
3210
raise errors.BzrCommandError("No changes to commit."
3182
3211
" Use --unchanged to commit anyhow.")
3183
3212
except ConflictsInTree:
3198
3227
class cmd_check(Command):
3199
"""Validate working tree structure, branch consistency and repository history.
3228
__doc__ = """Validate working tree structure, branch consistency and repository history.
3201
3230
This command checks various invariants about branch and repository storage
3202
3231
to detect data corruption or bzr bugs.
3436
3465
class cmd_selftest(Command):
3437
"""Run internal test suite.
3466
__doc__ = """Run internal test suite.
3439
3468
If arguments are given, they are regular expressions that say which tests
3440
3469
should run. Tests matching any expression are run, and other tests are
3581
3610
raise errors.BzrCommandError("subunit not available. subunit "
3582
3611
"needs to be installed to use --subunit.")
3583
3612
self.additional_selftest_args['runner_class'] = SubUnitBzrRunner
3613
# On Windows, disable automatic conversion of '\n' to '\r\n' in
3614
# stdout, which would corrupt the subunit stream.
3615
if sys.platform == "win32" and sys.stdout.fileno() >= 0:
3617
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
3585
3619
self.additional_selftest_args.setdefault(
3586
3620
'suite_decorators', []).append(parallel)
3646
3680
class cmd_find_merge_base(Command):
3647
"""Find and print a base revision for merging two branches."""
3681
__doc__ = """Find and print a base revision for merging two branches."""
3648
3682
# TODO: Options to specify revisions on either side, as if
3649
3683
# merging only part of the history.
3650
3684
takes_args = ['branch', 'other']
3672
3706
class cmd_merge(Command):
3673
"""Perform a three-way merge.
3707
__doc__ = """Perform a three-way merge.
3675
3709
The source of the merge can be specified either in the form of a branch,
3676
3710
or in the form of a path to a file containing a merge directive generated
4063
4097
def run(self, file_list=None, merge_type=None, show_base=False,
4064
4098
reprocess=False):
4099
from bzrlib.conflicts import restore
4065
4100
if merge_type is None:
4066
4101
merge_type = _mod_merge.Merge3Merger
4067
4102
tree, file_list = tree_files(file_list)
4127
4162
class cmd_revert(Command):
4128
"""Revert files to a previous revision.
4163
__doc__ = """Revert files to a previous revision.
4130
4165
Giving a list of files will revert only those files. Otherwise, all files
4131
4166
will be reverted. If the revision is not specified with '--revision', the
4182
4217
def run(self, revision=None, no_backup=False, file_list=None,
4183
4218
forget_merges=None):
4184
4219
tree, file_list = tree_files(file_list)
4220
tree.lock_tree_write()
4186
4221
self.add_cleanup(tree.unlock)
4187
4222
if forget_merges:
4188
4223
tree.set_parent_ids(tree.get_parent_ids()[:1])
4339
4377
remote_branch = Branch.open(other_branch)
4340
4378
if remote_branch.base == local_branch.base:
4341
4379
remote_branch = local_branch
4381
remote_branch.lock_read()
4382
self.add_cleanup(remote_branch.unlock)
4343
local_branch.lock_read()
4344
self.add_cleanup(local_branch.unlock)
4345
4384
local_revid_range = _revision_range_to_revid_range(
4346
4385
_get_revision_range(my_revision, local_branch,
4349
remote_branch.lock_read()
4350
self.add_cleanup(remote_branch.unlock)
4351
4388
remote_revid_range = _revision_range_to_revid_range(
4352
4389
_get_revision_range(revision,
4353
4390
remote_branch, self.name()))
4414
4451
class cmd_pack(Command):
4415
"""Compress the data within a repository."""
4452
__doc__ = """Compress the data within a repository.
4454
This operation compresses the data within a bazaar repository. As
4455
bazaar supports automatic packing of repository, this operation is
4456
normally not required to be done manually.
4458
During the pack operation, bazaar takes a backup of existing repository
4459
data, i.e. pack files. This backup is eventually removed by bazaar
4460
automatically when it is safe to do so. To save disk space by removing
4461
the backed up pack files, the --clean-obsolete-packs option may be
4464
Warning: If you use --clean-obsolete-packs and your machine crashes
4465
during or immediately after repacking, you may be left with a state
4466
where the deletion has been written to disk but the new packs have not
4467
been. In this case the repository may be unusable.
4417
4470
_see_also = ['repositories']
4418
4471
takes_args = ['branch_or_repo?']
4473
Option('clean-obsolete-packs', 'Delete obsolete packs to save disk space.'),
4420
def run(self, branch_or_repo='.'):
4476
def run(self, branch_or_repo='.', clean_obsolete_packs=False):
4421
4477
dir = bzrdir.BzrDir.open_containing(branch_or_repo)[0]
4423
4479
branch = dir.open_branch()
4424
4480
repository = branch.repository
4425
4481
except errors.NotBranchError:
4426
4482
repository = dir.open_repository()
4483
repository.pack(clean_obsolete_packs=clean_obsolete_packs)
4430
4486
class cmd_plugins(Command):
4431
"""List the installed plugins.
4487
__doc__ = """List the installed plugins.
4433
4489
This command displays the list of installed plugins including
4434
4490
version of plugin and a short description of each.
4507
4563
class cmd_annotate(Command):
4508
"""Show the origin of each line in a file.
4564
__doc__ = """Show the origin of each line in a file.
4510
4566
This prints out the given file with an annotation on the left side
4511
4567
indicating which revision, author and date introduced the change.
4666
4722
class cmd_unbind(Command):
4667
"""Convert the current checkout into a regular branch.
4723
__doc__ = """Convert the current checkout into a regular branch.
4669
4725
After unbinding, the local branch is considered independent and subsequent
4670
4726
commits will be local only.
4683
4739
class cmd_uncommit(Command):
4684
"""Remove the last committed revision.
4740
__doc__ = """Remove the last committed revision.
4686
4742
--verbose will print out what is being removed.
4687
4743
--dry-run will go through all the motions, but not actually
4791
4847
class cmd_break_lock(Command):
4792
"""Break a dead lock on a repository, branch or working directory.
4848
__doc__ = """Break a dead lock on a repository, branch or working directory.
4794
4850
CAUTION: Locks should only be broken when you are sure that the process
4795
4851
holding the lock has been stopped.
4942
4998
class cmd_split(Command):
4943
"""Split a subdirectory of a tree into a separate tree.
4999
__doc__ = """Split a subdirectory of a tree into a separate tree.
4945
5001
This command will produce a target tree in a format that supports
4946
5002
rich roots, like 'rich-root' or 'rich-root-pack'. These formats cannot be
4968
5024
class cmd_merge_directive(Command):
4969
"""Generate a merge directive for auto-merge tools.
5025
__doc__ = """Generate a merge directive for auto-merge tools.
4971
5027
A directive requests a merge to be performed, and also provides all the
4972
5028
information necessary to do so. This means it must either include a
5257
5313
class cmd_tag(Command):
5258
"""Create, remove or modify a tag naming a revision.
5314
__doc__ = """Create, remove or modify a tag naming a revision.
5260
5316
Tags give human-meaningful names to revisions. Commands that take a -r
5261
5317
(--revision) option can be given -rtag:X, where X is any previously
5495
5551
class cmd_switch(Command):
5496
"""Set the branch of a checkout and update.
5552
__doc__ = """Set the branch of a checkout and update.
5498
5554
For lightweight checkouts, this changes the branch being referenced.
5499
5555
For heavyweight checkouts, this checks that there are no local commits
5790
5846
class cmd_shelve(Command):
5791
"""Temporarily set aside some changes from the current tree.
5847
__doc__ = """Temporarily set aside some changes from the current tree.
5793
5849
Shelve allows you to temporarily put changes you've made "on the shelf",
5794
5850
ie. out of the way, until a later time when you can bring them back from
5865
5921
class cmd_unshelve(Command):
5866
"""Restore shelved changes.
5922
__doc__ = """Restore shelved changes.
5868
5924
By default, the most recently shelved changes are restored. However if you
5869
5925
specify a shelf by id those changes will be restored instead. This works
5897
5953
class cmd_clean_tree(Command):
5898
"""Remove unwanted files from working tree.
5954
__doc__ = """Remove unwanted files from working tree.
5900
5956
By default, only unknown files, not ignored files, are deleted. Versioned
5901
5957
files are never deleted.
5931
5987
class cmd_reference(Command):
5932
"""list, view and set branch locations for nested trees.
5988
__doc__ = """list, view and set branch locations for nested trees.
5934
5990
If no arguments are provided, lists the branch locations for nested trees.
5935
5991
If one argument is provided, display the branch location for that tree.
5975
6031
self.outf.write('%s %s\n' % (path, location))
5978
from bzrlib.cmd_version_info import cmd_version_info
5979
from bzrlib.conflicts import cmd_resolve, cmd_conflicts, restore
5980
from bzrlib.foreign import cmd_dpush
5981
from bzrlib.sign_my_commits import cmd_sign_my_commits
6034
def _register_lazy_builtins():
6035
# register lazy builtins from other modules; called at startup and should
6036
# be only called once.
6037
for (name, aliases, module_name) in [
6038
('cmd_bundle_info', [], 'bzrlib.bundle.commands'),
6039
('cmd_dpush', [], 'bzrlib.foreign'),
6040
('cmd_version_info', [], 'bzrlib.cmd_version_info'),
6041
('cmd_resolve', ['resolved'], 'bzrlib.conflicts'),
6042
('cmd_conflicts', [], 'bzrlib.conflicts'),
6043
('cmd_sign_my_commits', [], 'bzrlib.sign_my_commits'),
6045
builtin_command_registry.register_lazy(name, aliases, module_name)