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.
923
984
"branch. Local pulls are not applied to "
924
985
"the master branch."
988
help="Show base revision text in conflicts.")
927
990
takes_args = ['location?']
928
991
encoding_type = 'replace'
930
993
def run(self, location=None, remember=False, overwrite=False,
931
994
revision=None, verbose=False,
932
directory=None, local=False):
995
directory=None, local=False,
933
997
# FIXME: too much stuff is in the command class
934
998
revision_id = None
1063
1138
def run(self, location=None, remember=False, overwrite=False,
1064
1139
create_prefix=False, verbose=False, revision=None,
1065
1140
use_existing_dir=False, directory=None, stacked_on=None,
1066
stacked=False, strict=None):
1141
stacked=False, strict=None, no_tree=False):
1067
1142
from bzrlib.push import _show_push_branch
1069
1144
if directory is None:
1115
1190
_show_push_branch(br_from, revision_id, location, self.outf,
1116
1191
verbose=verbose, overwrite=overwrite, remember=remember,
1117
1192
stacked_on=stacked_on, create_prefix=create_prefix,
1118
use_existing_dir=use_existing_dir)
1193
use_existing_dir=use_existing_dir, no_tree=no_tree)
1121
1196
class cmd_branch(Command):
1354
1429
If you want to discard your local changes, you can just do a
1355
1430
'bzr revert' instead of 'bzr commit' after the update.
1432
If you want to restore a file that has been removed locally, use
1433
'bzr revert' instead of 'bzr update'.
1357
1435
If the tree's branch is bound to a master branch, it will also update
1358
1436
the branch from the master.
1361
1439
_see_also = ['pull', 'working-trees', 'status-flags']
1362
1440
takes_args = ['dir?']
1363
takes_options = ['revision']
1441
takes_options = ['revision',
1443
help="Show base revision text in conflicts."),
1364
1445
aliases = ['up']
1366
def run(self, dir='.', revision=None):
1447
def run(self, dir='.', revision=None, show_base=None):
1367
1448
if revision is not None and len(revision) != 1:
1368
1449
raise errors.BzrCommandError(
1369
1450
"bzr update --revision takes exactly one revision")
1491
1573
title='Deletion Strategy', value_switches=True, enum_switch=False,
1492
1574
safe='Backup changed files (default).',
1493
1575
keep='Delete from bzr but leave the working copy.',
1576
no_backup='Don\'t backup changed files.',
1494
1577
force='Delete all the specified files, even if they can not be '
1495
'recovered and even if they are non-empty directories.')]
1578
'recovered and even if they are non-empty directories. '
1579
'(deprecated, use no-backup)')]
1496
1580
aliases = ['rm', 'del']
1497
1581
encoding_type = 'replace'
1499
1583
def run(self, file_list, verbose=False, new=False,
1500
1584
file_deletion_strategy='safe'):
1585
if file_deletion_strategy == 'force':
1586
note("(The --force option is deprecated, rather use --no-backup "
1588
file_deletion_strategy = 'no-backup'
1501
1590
tree, file_list = WorkingTree.open_containing_paths(file_list)
1503
1592
if file_list is not None:
1686
1775
Option('append-revisions-only',
1687
1776
help='Never change revnos or the existing log.'
1688
' Append revisions to it only.')
1777
' Append revisions to it only.'),
1779
'Create a branch without a working tree.')
1690
1781
def run(self, location=None, format=None, append_revisions_only=False,
1691
create_prefix=False):
1782
create_prefix=False, no_tree=False):
1692
1783
if format is None:
1693
1784
format = bzrdir.format_registry.make_bzrdir('default')
1694
1785
if location is None:
3271
3393
class cmd_upgrade(Command):
3272
__doc__ = """Upgrade branch storage to current format.
3274
The check command or bzr developers may sometimes advise you to run
3275
this command. When the default format has changed you may also be warned
3276
during other operations to upgrade.
3394
__doc__ = """Upgrade a repository, branch or working tree to a newer format.
3396
When the default format has changed after a major new release of
3397
Bazaar, you may be informed during certain operations that you
3398
should upgrade. Upgrading to a newer format may improve performance
3399
or make new features available. It may however limit interoperability
3400
with older repositories or with older versions of Bazaar.
3402
If you wish to upgrade to a particular format rather than the
3403
current default, that can be specified using the --format option.
3404
As a consequence, you can use the upgrade command this way to
3405
"downgrade" to an earlier format, though some conversions are
3406
a one way process (e.g. changing from the 1.x default to the
3407
2.x default) so downgrading is not always possible.
3409
A backup.bzr.~#~ directory is created at the start of the conversion
3410
process (where # is a number). By default, this is left there on
3411
completion. If the conversion fails, delete the new .bzr directory
3412
and rename this one back in its place. Use the --clean option to ask
3413
for the backup.bzr directory to be removed on successful conversion.
3414
Alternatively, you can delete it by hand if everything looks good
3417
If the location given is a shared repository, dependent branches
3418
are also converted provided the repository converts successfully.
3419
If the conversion of a branch fails, remaining branches are still
3422
For more information on upgrades, see the Bazaar Upgrade Guide,
3423
http://doc.bazaar.canonical.com/latest/en/upgrade-guide/.
3279
_see_also = ['check']
3426
_see_also = ['check', 'reconcile', 'formats']
3280
3427
takes_args = ['url?']
3281
3428
takes_options = [
3282
RegistryOption('format',
3283
help='Upgrade to a specific format. See "bzr help'
3284
' formats" for details.',
3285
lazy_registry=('bzrlib.bzrdir', 'format_registry'),
3286
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),
3287
value_switches=True, title='Branch format'),
3429
RegistryOption('format',
3430
help='Upgrade to a specific format. See "bzr help'
3431
' formats" for details.',
3432
lazy_registry=('bzrlib.bzrdir', 'format_registry'),
3433
converter=lambda name: bzrdir.format_registry.make_bzrdir(name),
3434
value_switches=True, title='Branch format'),
3436
help='Remove the backup.bzr directory if successful.'),
3438
help="Show what would be done, but don't actually do anything."),
3290
def run(self, url='.', format=None):
3441
def run(self, url='.', format=None, clean=False, dry_run=False):
3291
3442
from bzrlib.upgrade import upgrade
3292
upgrade(url, format)
3443
exceptions = upgrade(url, format, clean_up=clean, dry_run=dry_run)
3445
if len(exceptions) == 1:
3446
# Compatibility with historical behavior
3295
3452
class cmd_whoami(Command):
3690
3851
with bzr send. If neither is specified, the default is the upstream branch
3691
3852
or the branch most recently merged using --remember.
3693
When merging a branch, by default the tip will be merged. To pick a different
3694
revision, pass --revision. If you specify two values, the first will be used as
3695
BASE and the second one as OTHER. Merging individual revisions, or a subset of
3696
available revisions, like this is commonly referred to as "cherrypicking".
3698
Revision numbers are always relative to the branch being merged.
3700
By default, bzr will try to merge in all new work from the other
3701
branch, automatically determining an appropriate base. If this
3702
fails, you may need to give an explicit base.
3854
When merging from a branch, by default bzr will try to merge in all new
3855
work from the other branch, automatically determining an appropriate base
3856
revision. If this fails, you may need to give an explicit base.
3858
To pick a different ending revision, pass "--revision OTHER". bzr will
3859
try to merge in all new work up to and including revision OTHER.
3861
If you specify two values, "--revision BASE..OTHER", only revisions BASE
3862
through OTHER, excluding BASE but including OTHER, will be merged. If this
3863
causes some revisions to be skipped, i.e. if the destination branch does
3864
not already contain revision BASE, such a merge is commonly referred to as
3867
Revision numbers are always relative to the source branch.
3704
3869
Merge will do its best to combine the changes in two branches, but there
3705
3870
are some kinds of problems only a human can fix. When it encounters those,
3969
4134
if ((remember or tree.branch.get_submit_branch() is None) and
3970
4135
user_location is not None):
3971
4136
tree.branch.set_submit_branch(other_branch.base)
3972
_merge_tags_if_possible(other_branch, tree.branch)
4137
# Merge tags (but don't set them in the master branch yet, the user
4138
# might revert this merge). Commit will propagate them.
4139
_merge_tags_if_possible(other_branch, tree.branch, ignore_master=True)
3973
4140
merger = _mod_merge.Merger.from_revision_ids(pb, tree,
3974
4141
other_revision_id, base_revision_id, other_branch, base_branch)
3975
4142
if other_path != '':
4143
4310
last committed revision is used.
4145
4312
To remove only some changes, without reverting to a prior version, use
4146
merge instead. For example, "merge . --revision -2..-3" will remove the
4147
changes introduced by -2, without affecting the changes introduced by -1.
4148
Or to remove certain changes on a hunk-by-hunk basis, see the Shelf plugin.
4313
merge instead. For example, "merge . -r -2..-3" (don't forget the ".")
4314
will remove the changes introduced by the second last commit (-2), without
4315
affecting the changes introduced by the last commit (-1). To remove
4316
certain changes on a hunk-by-hunk basis, see the shelve command.
4150
4318
By default, any files that have been manually changed will be backed up
4151
4319
first. (Files changed only by merge are not backed up.) Backup files have
4481
4649
@display_command
4482
4650
def run(self, verbose=False):
4483
import bzrlib.plugin
4484
from inspect import getdoc
4486
for name, plugin in bzrlib.plugin.plugins().items():
4487
version = plugin.__version__
4488
if version == 'unknown':
4490
name_ver = '%s %s' % (name, version)
4491
d = getdoc(plugin.module)
4493
doc = d.split('\n')[0]
4495
doc = '(no description)'
4496
result.append((name_ver, doc, plugin.path()))
4497
for name_ver, doc, path in sorted(result):
4498
self.outf.write("%s\n" % name_ver)
4499
self.outf.write(" %s\n" % doc)
4501
self.outf.write(" %s\n" % path)
4502
self.outf.write("\n")
4651
from bzrlib import plugin
4652
self.outf.writelines(
4653
plugin.describe_plugins(show_paths=verbose))
4505
4656
class cmd_testament(Command):
4567
4718
self.add_cleanup(branch.lock_read().unlock)
4568
4719
tree = _get_one_revision_tree('annotate', revision, branch=branch)
4569
4720
self.add_cleanup(tree.lock_read().unlock)
4721
if wt is not None and revision is None:
4571
4722
file_id = wt.path2id(relpath)
4573
4724
file_id = tree.path2id(relpath)
4574
4725
if file_id is None:
4575
4726
raise errors.NotVersionedError(filename)
4576
file_version = tree.inventory[file_id].revision
4577
4727
if wt is not None and revision is None:
4578
4728
# If there is a tree and we're not annotating historical
4579
4729
# versions, annotate the working tree's content.
4580
4730
annotate_file_tree(wt, file_id, self.outf, long, all,
4581
4731
show_ids=show_ids)
4733
file_version = tree.inventory[file_id].revision
4583
4734
annotate_file(branch, file_version, file_id, long, all, self.outf,
4584
4735
show_ids=show_ids)
4835
4989
takes_options = [
4836
4990
Option('config',
4837
4991
help='LOCATION is the directory where the config lock is.'),
4993
help='Do not ask for confirmation before breaking the lock.'),
4840
def run(self, location=None, config=False):
4996
def run(self, location=None, config=False, force=False):
4841
4997
if location is None:
4842
4998
location = u'.'
5000
ui.ui_factory = ui.ConfirmationUserInterfacePolicy(ui.ui_factory,
5002
{'bzrlib.lockdir.break': True})
4844
5004
conf = _mod_config.LockableConfig(file_name=location)
4845
5005
conf.break_lock()
5372
5532
takes_options = [
5373
5533
custom_help('directory',
5374
5534
help='Branch whose tags should be displayed.'),
5375
RegistryOption.from_kwargs('sort',
5535
RegistryOption('sort',
5376
5536
'Sort tags by different criteria.', title='Sorting',
5377
alpha='Sort tags lexicographically (default).',
5378
time='Sort tags chronologically.',
5537
lazy_registry=('bzrlib.tag', 'tag_sort_methods')
5384
5543
@display_command
5544
def run(self, directory='.', sort=None, show_ids=False, revision=None):
5545
from bzrlib.tag import tag_sort_methods
5391
5546
branch, relpath = Branch.open_containing(directory)
5393
5548
tags = branch.tags.get_tag_dict().items()
5402
5557
# only show revisions between revid1 and revid2 (inclusive)
5403
5558
tags = [(tag, revid) for tag, revid in tags if
5404
5559
graph.is_between(revid, revid1, revid2)]
5407
elif sort == 'time':
5409
for tag, revid in tags:
5411
revobj = branch.repository.get_revision(revid)
5412
except errors.NoSuchRevision:
5413
timestamp = sys.maxint # place them at the end
5415
timestamp = revobj.timestamp
5416
timestamps[revid] = timestamp
5417
tags.sort(key=lambda x: timestamps[x[1]])
5561
sort = tag_sort_methods.get()
5418
5563
if not show_ids:
5419
5564
# [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
5420
5565
for index, (tag, revid) in enumerate(tags):
5844
5989
You can put multiple items on the shelf, and by default, 'unshelve' will
5845
5990
restore the most recently shelved changes.
5992
For complicated changes, it is possible to edit the changes in a separate
5993
editor program to decide what the file remaining in the working copy
5994
should look like. To do this, add the configuration option
5996
change_editor = PROGRAM @new_path @old_path
5998
where @new_path is replaced with the path of the new version of the
5999
file and @old_path is replaced with the path of the old version of
6000
the file. The PROGRAM should save the new file with the desired
6001
contents of the file in the working tree.
5848
6005
takes_args = ['file*']
5860
6017
Option('destroy',
5861
6018
help='Destroy removed changes instead of shelving them.'),
5863
_see_also = ['unshelve']
6020
_see_also = ['unshelve', 'configuration']
5865
6022
def run(self, revision=None, all=False, file_list=None, message=None,
5866
writer=None, list=False, destroy=False, directory=u'.'):
6023
writer=None, list=False, destroy=False, directory=None):
5868
return self.run_for_list()
6025
return self.run_for_list(directory=directory)
5869
6026
from bzrlib.shelf_ui import Shelver
5870
6027
if writer is None:
5871
6028
writer = bzrlib.option.diff_writer_registry.get()
5946
6105
takes_options = ['directory',
5947
6106
Option('ignored', help='Delete all ignored files.'),
5948
Option('detritus', help='Delete conflict files, merge'
6107
Option('detritus', help='Delete conflict files, merge and revert'
5949
6108
' backups, and failed selftest dirs.'),
5950
6109
Option('unknown',
5951
6110
help='Delete files unknown to bzr (default).'),
6015
6174
# be only called once.
6016
6175
for (name, aliases, module_name) in [
6017
6176
('cmd_bundle_info', [], 'bzrlib.bundle.commands'),
6177
('cmd_config', [], 'bzrlib.config'),
6018
6178
('cmd_dpush', [], 'bzrlib.foreign'),
6019
6179
('cmd_version_info', [], 'bzrlib.cmd_version_info'),
6020
6180
('cmd_resolve', ['resolved'], 'bzrlib.conflicts'),
6021
6181
('cmd_conflicts', [], 'bzrlib.conflicts'),
6022
6182
('cmd_sign_my_commits', [], 'bzrlib.sign_my_commits'),
6183
('cmd_test_script', [], 'bzrlib.cmd_test_script'),
6024
6185
builtin_command_registry.register_lazy(name, aliases, module_name)