250
250
To skip the display of pending merge information altogether, use
251
251
the no-pending option or specify a file/directory.
253
If a revision argument is given, the status is calculated against
254
that revision, or between two revisions if two are provided.
253
To compare the working directory to a specific revision, pass a
254
single revision to the revision argument.
256
To see which files have changed in a specific revision, or between
257
two revisions, pass a revision range to the revision argument.
258
This will produce the same results as calling 'bzr diff --summarize'.
257
261
# TODO: --no-recurse, --recurse options
477
485
d.destroy_workingtree()
488
class cmd_repair_workingtree(Command):
489
__doc__ = """Reset the working tree state file.
491
This is not meant to be used normally, but more as a way to recover from
492
filesystem corruption, etc. This rebuilds the working inventory back to a
493
'known good' state. Any new modifications (adding a file, renaming, etc)
494
will be lost, though modified files will still be detected as such.
496
Most users will want something more like "bzr revert" or "bzr update"
497
unless the state file has become corrupted.
499
By default this attempts to recover the current state by looking at the
500
headers of the state file. If the state file is too corrupted to even do
501
that, you can supply --revision to force the state of the tree.
504
takes_options = ['revision', 'directory',
506
help='Reset the tree even if it doesn\'t appear to be'
511
def run(self, revision=None, directory='.', force=False):
512
tree, _ = WorkingTree.open_containing(directory)
513
self.add_cleanup(tree.lock_tree_write().unlock)
517
except errors.BzrError:
518
pass # There seems to be a real error here, so we'll reset
521
raise errors.BzrCommandError(
522
'The tree does not appear to be corrupt. You probably'
523
' want "bzr revert" instead. Use "--force" if you are'
524
' sure you want to reset the working tree.')
528
revision_ids = [r.as_revision_id(tree.branch) for r in revision]
530
tree.reset_state(revision_ids)
531
except errors.BzrError, e:
532
if revision_ids is None:
533
extra = (', the header appears corrupt, try passing -r -1'
534
' to set the state to the last commit')
537
raise errors.BzrCommandError('failed to reset the tree state'
480
541
class cmd_revno(Command):
481
542
__doc__ = """Show current revision number.
1070
1138
def run(self, location=None, remember=False, overwrite=False,
1071
1139
create_prefix=False, verbose=False, revision=None,
1072
1140
use_existing_dir=False, directory=None, stacked_on=None,
1073
stacked=False, strict=None):
1141
stacked=False, strict=None, no_tree=False):
1074
1142
from bzrlib.push import _show_push_branch
1076
1144
if directory is None:
1122
1190
_show_push_branch(br_from, revision_id, location, self.outf,
1123
1191
verbose=verbose, overwrite=overwrite, remember=remember,
1124
1192
stacked_on=stacked_on, create_prefix=create_prefix,
1125
use_existing_dir=use_existing_dir)
1193
use_existing_dir=use_existing_dir, no_tree=no_tree)
1128
1196
class cmd_branch(Command):
1172
1242
files_from=None):
1173
1243
from bzrlib import switch as _mod_switch
1174
1244
from bzrlib.tag import _merge_tags_if_possible
1245
if self.invoked_as in ['get', 'clone']:
1246
ui.ui_factory.show_user_warning(
1247
'deprecated_command',
1248
deprecated_name=self.invoked_as,
1249
recommended_name='branch',
1250
deprecated_in_version='2.4')
1175
1251
accelerator_tree, br_from = bzrdir.BzrDir.open_tree_or_branch(
1177
1253
if not (hardlink or files_from):
1505
1581
title='Deletion Strategy', value_switches=True, enum_switch=False,
1506
1582
safe='Backup changed files (default).',
1507
1583
keep='Delete from bzr but leave the working copy.',
1584
no_backup='Don\'t backup changed files.',
1508
1585
force='Delete all the specified files, even if they can not be '
1509
'recovered and even if they are non-empty directories.')]
1586
'recovered and even if they are non-empty directories. '
1587
'(deprecated, use no-backup)')]
1510
1588
aliases = ['rm', 'del']
1511
1589
encoding_type = 'replace'
1513
1591
def run(self, file_list, verbose=False, new=False,
1514
1592
file_deletion_strategy='safe'):
1593
if file_deletion_strategy == 'force':
1594
note("(The --force option is deprecated, rather use --no-backup "
1596
file_deletion_strategy = 'no-backup'
1515
1598
tree, file_list = WorkingTree.open_containing_paths(file_list)
1517
1600
if file_list is not None:
1700
1783
Option('append-revisions-only',
1701
1784
help='Never change revnos or the existing log.'
1702
' Append revisions to it only.')
1785
' Append revisions to it only.'),
1787
'Create a branch without a working tree.')
1704
1789
def run(self, location=None, format=None, append_revisions_only=False,
1705
create_prefix=False):
1790
create_prefix=False, no_tree=False):
1706
1791
if format is None:
1707
1792
format = bzrdir.format_registry.make_bzrdir('default')
1708
1793
if location is None:
2998
3114
to trigger updates to external systems like bug trackers. The --fixes
2999
3115
option can be used to record the association between a revision and
3000
3116
one or more bugs. See ``bzr help bugs`` for details.
3002
A selective commit may fail in some cases where the committed
3003
tree would be invalid. Consider::
3008
bzr commit foo -m "committing foo"
3009
bzr mv foo/bar foo/baz
3012
bzr commit foo/bar -m "committing bar but not baz"
3014
In the example above, the last commit will fail by design. This gives
3015
the user the opportunity to decide whether they want to commit the
3016
rename at the same time, separately first, or not at all. (As a general
3017
rule, when in doubt, Bazaar has a policy of Doing the Safe Thing.)
3019
# TODO: Run hooks on tree to-be-committed, and after commit.
3021
# TODO: Strict commit that fails if there are deleted files.
3022
# (what does "deleted files" mean ??)
3024
# TODO: Give better message for -s, --summary, used by tla people
3026
# XXX: verbose currently does nothing
3028
3119
_see_also = ['add', 'bugs', 'hooks', 'uncommit']
3029
3120
takes_args = ['selected*']
3086
3181
def run(self, message=None, file=None, verbose=False, selected_list=None,
3087
3182
unchanged=False, strict=False, local=False, fixes=None,
3088
author=None, show_diff=False, exclude=None, commit_time=None):
3183
author=None, show_diff=False, exclude=None, commit_time=None,
3089
3185
from bzrlib.errors import (
3090
3186
PointlessCommit,
3091
3187
ConflictsInTree,
3193
3283
reporter=None, verbose=verbose, revprops=properties,
3194
3284
authors=author, timestamp=commit_stamp,
3195
3285
timezone=offset,
3196
exclude=tree.safe_relpath_files(exclude))
3286
exclude=tree.safe_relpath_files(exclude),
3197
3288
except PointlessCommit:
3198
3289
raise errors.BzrCommandError("No changes to commit."
3199
" Use --unchanged to commit anyhow.")
3290
" Please 'bzr add' the files you want to commit, or use"
3291
" --unchanged to force an empty commit.")
3200
3292
except ConflictsInTree:
3201
3293
raise errors.BzrCommandError('Conflicts detected in working '
3202
3294
'tree. Use "bzr conflicts" to list, "bzr resolve FILE" to'
3285
3377
class cmd_upgrade(Command):
3286
__doc__ = """Upgrade branch storage to current format.
3288
The check command or bzr developers may sometimes advise you to run
3289
this command. When the default format has changed you may also be warned
3290
during other operations to upgrade.
3378
__doc__ = """Upgrade a repository, branch or working tree to a newer format.
3380
When the default format has changed after a major new release of
3381
Bazaar, you may be informed during certain operations that you
3382
should upgrade. Upgrading to a newer format may improve performance
3383
or make new features available. It may however limit interoperability
3384
with older repositories or with older versions of Bazaar.
3386
If you wish to upgrade to a particular format rather than the
3387
current default, that can be specified using the --format option.
3388
As a consequence, you can use the upgrade command this way to
3389
"downgrade" to an earlier format, though some conversions are
3390
a one way process (e.g. changing from the 1.x default to the
3391
2.x default) so downgrading is not always possible.
3393
A backup.bzr.~#~ directory is created at the start of the conversion
3394
process (where # is a number). By default, this is left there on
3395
completion. If the conversion fails, delete the new .bzr directory
3396
and rename this one back in its place. Use the --clean option to ask
3397
for the backup.bzr directory to be removed on successful conversion.
3398
Alternatively, you can delete it by hand if everything looks good
3401
If the location given is a shared repository, dependent branches
3402
are also converted provided the repository converts successfully.
3403
If the conversion of a branch fails, remaining branches are still
3406
For more information on upgrades, see the Bazaar Upgrade Guide,
3407
http://doc.bazaar.canonical.com/latest/en/upgrade-guide/.
3293
_see_also = ['check']
3410
_see_also = ['check', 'reconcile', 'formats']
3294
3411
takes_args = ['url?']
3295
3412
takes_options = [
3296
RegistryOption('format',
3297
help='Upgrade to a specific format. See "bzr help'
3298
' formats" for details.',
3299
lazy_registry=('bzrlib.bzrdir', 'format_registry'),
3300
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),
3301
value_switches=True, title='Branch format'),
3413
RegistryOption('format',
3414
help='Upgrade to a specific format. See "bzr help'
3415
' formats" for details.',
3416
lazy_registry=('bzrlib.bzrdir', 'format_registry'),
3417
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),
3418
value_switches=True, title='Branch format'),
3420
help='Remove the backup.bzr directory if successful.'),
3422
help="Show what would be done, but don't actually do anything."),
3304
def run(self, url='.', format=None):
3425
def run(self, url='.', format=None, clean=False, dry_run=False):
3305
3426
from bzrlib.upgrade import upgrade
3306
upgrade(url, format)
3427
exceptions = upgrade(url, format, clean_up=clean, dry_run=dry_run)
3429
if len(exceptions) == 1:
3430
# Compatibility with historical behavior
3309
3436
class cmd_whoami(Command):
3704
3835
with bzr send. If neither is specified, the default is the upstream branch
3705
3836
or the branch most recently merged using --remember.
3707
When merging a branch, by default the tip will be merged. To pick a different
3708
revision, pass --revision. If you specify two values, the first will be used as
3709
BASE and the second one as OTHER. Merging individual revisions, or a subset of
3710
available revisions, like this is commonly referred to as "cherrypicking".
3712
Revision numbers are always relative to the branch being merged.
3714
By default, bzr will try to merge in all new work from the other
3715
branch, automatically determining an appropriate base. If this
3716
fails, you may need to give an explicit base.
3838
When merging from a branch, by default bzr will try to merge in all new
3839
work from the other branch, automatically determining an appropriate base
3840
revision. If this fails, you may need to give an explicit base.
3842
To pick a different ending revision, pass "--revision OTHER". bzr will
3843
try to merge in all new work up to and including revision OTHER.
3845
If you specify two values, "--revision BASE..OTHER", only revisions BASE
3846
through OTHER, excluding BASE but including OTHER, will be merged. If this
3847
causes some revisions to be skipped, i.e. if the destination branch does
3848
not already contain revision BASE, such a merge is commonly referred to as
3851
Revision numbers are always relative to the source branch.
3718
3853
Merge will do its best to combine the changes in two branches, but there
3719
3854
are some kinds of problems only a human can fix. When it encounters those,
3723
3858
Use bzr resolve when you have fixed a problem. See also bzr conflicts.
3725
If there is no default branch set, the first merge will set it. After
3726
that, you can omit the branch to use the default. To change the
3727
default, use --remember. The value will only be saved if the remote
3728
location can be accessed.
3860
If there is no default branch set, the first merge will set it (use
3861
--no-remember to *not* set it). After that, you can omit the branch to use
3862
the default. To change the default, use --remember. The value will only be
3863
saved if the remote location can be accessed.
3730
3865
The results of the merge are placed into the destination working
3731
3866
directory, where they can be reviewed (with bzr diff), tested, and then
3798
3933
def run(self, location=None, revision=None, force=False,
3799
merge_type=None, show_base=False, reprocess=None, remember=False,
3934
merge_type=None, show_base=False, reprocess=None, remember=None,
3800
3935
uncommitted=False, pull=False,
3801
3936
directory=None,
3979
4114
if other_revision_id is None:
3980
4115
other_revision_id = _mod_revision.ensure_null(
3981
4116
other_branch.last_revision())
3982
# Remember where we merge from
3983
if ((remember or tree.branch.get_submit_branch() is None) and
3984
user_location is not None):
4117
# Remember where we merge from. We need to remember if:
4118
# - user specify a location (and we don't merge from the parent
4120
# - user ask to remember or there is no previous location set to merge
4121
# from and user didn't ask to *not* remember
4122
if (user_location is not None
4124
or (remember is None
4125
and tree.branch.get_submit_branch() is None)))):
3985
4126
tree.branch.set_submit_branch(other_branch.base)
3986
_merge_tags_if_possible(other_branch, tree.branch)
4127
# Merge tags (but don't set them in the master branch yet, the user
4128
# might revert this merge). Commit will propagate them.
4129
_merge_tags_if_possible(other_branch, tree.branch, ignore_master=True)
3987
4130
merger = _mod_merge.Merger.from_revision_ids(pb, tree,
3988
4131
other_revision_id, base_revision_id, other_branch, base_branch)
3989
4132
if other_path != '':
4157
4300
last committed revision is used.
4159
4302
To remove only some changes, without reverting to a prior version, use
4160
merge instead. For example, "merge . --revision -2..-3" will remove the
4161
changes introduced by -2, without affecting the changes introduced by -1.
4162
Or to remove certain changes on a hunk-by-hunk basis, see the Shelf plugin.
4303
merge instead. For example, "merge . -r -2..-3" (don't forget the ".")
4304
will remove the changes introduced by the second last commit (-2), without
4305
affecting the changes introduced by the last commit (-1). To remove
4306
certain changes on a hunk-by-hunk basis, see the shelve command.
4164
4308
By default, any files that have been manually changed will be backed up
4165
4309
first. (Files changed only by merge are not backed up.) Backup files have
4495
4639
@display_command
4496
4640
def run(self, verbose=False):
4497
import bzrlib.plugin
4498
from inspect import getdoc
4500
for name, plugin in bzrlib.plugin.plugins().items():
4501
version = plugin.__version__
4502
if version == 'unknown':
4504
name_ver = '%s %s' % (name, version)
4505
d = getdoc(plugin.module)
4507
doc = d.split('\n')[0]
4509
doc = '(no description)'
4510
result.append((name_ver, doc, plugin.path()))
4511
for name_ver, doc, path in sorted(result):
4512
self.outf.write("%s\n" % name_ver)
4513
self.outf.write(" %s\n" % doc)
4515
self.outf.write(" %s\n" % path)
4516
self.outf.write("\n")
4641
from bzrlib import plugin
4642
# Don't give writelines a generator as some codecs don't like that
4643
self.outf.writelines(
4644
list(plugin.describe_plugins(show_paths=verbose)))
4519
4647
class cmd_testament(Command):
4581
4711
self.add_cleanup(branch.lock_read().unlock)
4582
4712
tree = _get_one_revision_tree('annotate', revision, branch=branch)
4583
4713
self.add_cleanup(tree.lock_read().unlock)
4714
if wt is not None and revision is None:
4585
4715
file_id = wt.path2id(relpath)
4587
4717
file_id = tree.path2id(relpath)
4588
4718
if file_id is None:
4589
4719
raise errors.NotVersionedError(filename)
4590
file_version = tree.inventory[file_id].revision
4591
4720
if wt is not None and revision is None:
4592
4721
# If there is a tree and we're not annotating historical
4593
4722
# versions, annotate the working tree's content.
4594
4723
annotate_file_tree(wt, file_id, self.outf, long, all,
4595
4724
show_ids=show_ids)
4597
annotate_file(branch, file_version, file_id, long, all, self.outf,
4726
annotate_file_tree(tree, file_id, self.outf, long, all,
4727
show_ids=show_ids, branch=branch)
4601
4730
class cmd_re_sign(Command):
5395
5524
takes_options = [
5396
5525
custom_help('directory',
5397
5526
help='Branch whose tags should be displayed.'),
5398
RegistryOption.from_kwargs('sort',
5527
RegistryOption('sort',
5399
5528
'Sort tags by different criteria.', title='Sorting',
5400
alpha='Sort tags lexicographically (default).',
5401
time='Sort tags chronologically.',
5529
lazy_registry=('bzrlib.tag', 'tag_sort_methods')
5407
5535
@display_command
5536
def run(self, directory='.', sort=None, show_ids=False, revision=None):
5537
from bzrlib.tag import tag_sort_methods
5414
5538
branch, relpath = Branch.open_containing(directory)
5416
5540
tags = branch.tags.get_tag_dict().items()
5425
5549
# only show revisions between revid1 and revid2 (inclusive)
5426
5550
tags = [(tag, revid) for tag, revid in tags if
5427
5551
graph.is_between(revid, revid1, revid2)]
5430
elif sort == 'time':
5432
for tag, revid in tags:
5434
revobj = branch.repository.get_revision(revid)
5435
except errors.NoSuchRevision:
5436
timestamp = sys.maxint # place them at the end
5438
timestamp = revobj.timestamp
5439
timestamps[revid] = timestamp
5440
tags.sort(key=lambda x: timestamps[x[1]])
5553
sort = tag_sort_methods.get()
5441
5555
if not show_ids:
5442
5556
# [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
5443
5557
for index, (tag, revid) in enumerate(tags):
5867
5981
You can put multiple items on the shelf, and by default, 'unshelve' will
5868
5982
restore the most recently shelved changes.
5984
For complicated changes, it is possible to edit the changes in a separate
5985
editor program to decide what the file remaining in the working copy
5986
should look like. To do this, add the configuration option
5988
change_editor = PROGRAM @new_path @old_path
5990
where @new_path is replaced with the path of the new version of the
5991
file and @old_path is replaced with the path of the old version of
5992
the file. The PROGRAM should save the new file with the desired
5993
contents of the file in the working tree.
5871
5997
takes_args = ['file*']
5883
6009
Option('destroy',
5884
6010
help='Destroy removed changes instead of shelving them.'),
5886
_see_also = ['unshelve']
6012
_see_also = ['unshelve', 'configuration']
5888
6014
def run(self, revision=None, all=False, file_list=None, message=None,
5889
writer=None, list=False, destroy=False, directory=u'.'):
6015
writer=None, list=False, destroy=False, directory=None):
5891
return self.run_for_list()
6017
return self.run_for_list(directory=directory)
5892
6018
from bzrlib.shelf_ui import Shelver
5893
6019
if writer is None:
5894
6020
writer = bzrlib.option.diff_writer_registry.get()
5969
6097
takes_options = ['directory',
5970
6098
Option('ignored', help='Delete all ignored files.'),
5971
Option('detritus', help='Delete conflict files, merge'
6099
Option('detritus', help='Delete conflict files, merge and revert'
5972
6100
' backups, and failed selftest dirs.'),
5973
6101
Option('unknown',
5974
6102
help='Delete files unknown to bzr (default).'),
6033
6161
self.outf.write('%s %s\n' % (path, location))
6164
class cmd_export_pot(Command):
6165
__doc__ = """Export command helps and error messages in po format."""
6170
from bzrlib.export_pot import export_pot
6171
export_pot(self.outf)
6036
6174
def _register_lazy_builtins():
6037
6175
# register lazy builtins from other modules; called at startup and should
6038
6176
# be only called once.
6039
6177
for (name, aliases, module_name) in [
6040
6178
('cmd_bundle_info', [], 'bzrlib.bundle.commands'),
6179
('cmd_config', [], 'bzrlib.config'),
6041
6180
('cmd_dpush', [], 'bzrlib.foreign'),
6042
6181
('cmd_version_info', [], 'bzrlib.cmd_version_info'),
6043
6182
('cmd_resolve', ['resolved'], 'bzrlib.conflicts'),
6044
6183
('cmd_conflicts', [], 'bzrlib.conflicts'),
6045
6184
('cmd_sign_my_commits', [], 'bzrlib.sign_my_commits'),
6185
('cmd_test_script', [], 'bzrlib.cmd_test_script'),
6047
6187
builtin_command_registry.register_lazy(name, aliases, module_name)