40
40
desired_plus = (desired[0], desired[1]+1)
41
41
bzrlib_version = bzrlib.version_info[:2]
42
if bzrlib_version == desired:
42
if bzrlib_version == desired or (bzrlib_version == desired_plus and
43
bzrlib.version_info[3] == 'dev'):
45
46
from bzrlib.trace import warning
47
48
# get the message out any way we can
48
49
from warnings import warn as warning
49
50
if bzrlib_version < desired:
50
warning('Installed Bazzar version %s is too old to be used with'
51
warning('Installed Bazaar version %s is too old to be used with'
52
53
'"Bzrtools" %s.' % (bzrlib.__version__, __version__))
53
54
# Not using BzrNewError, because it may not exist.
75
80
import bzrlib.commands
76
81
from bzrlib.commands import get_cmd_object
77
82
from bzrlib.errors import BzrCommandError
78
from bzrlib.help import command_usage
79
83
import bzrlib.ignores
80
84
from bzrlib.option import Option
81
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__),
85
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__),
102
106
To check what clean-tree will do, use --dry-run.
104
takes_options = [Option('ignored', help='delete all ignored files.'),
105
Option('detritus', help='delete conflict files, merge'
106
' backups, and failed selftest dirs.'),
108
help='delete files unknown to bzr. (default)'),
109
Option('dry-run', help='show files to delete instead of'
108
takes_options = [Option('ignored', help='Delete all ignored files.'),
109
Option('detritus', help='Delete conflict files, merge'
110
' backups, and failed selftest dirs.'),
112
help='Delete files unknown to bzr (default).'),
113
Option('dry-run', help='Show files to delete instead of'
110
114
' deleting them.')]
111
115
def run(self, unknown=False, ignored=False, detritus=False, dry_run=False):
112
116
from clean_tree import clean_tree
151
155
If available, rsvg is used to antialias PNG and JPEG output, but this can
152
156
be disabled with --no-antialias.
154
takes_args = ['branch', 'file']
155
takes_options = [Option('no-collapse', help="Do not skip simple nodes"),
158
takes_args = ['file', 'merge_branch?']
159
takes_options = [Option('no-collapse', help="Do not skip simple nodes."),
156
160
Option('no-antialias',
157
help="Do not use rsvg to produce antialiased output"),
158
Option('merge-branch', type=str,
159
help="Use this branch to calcuate a merge base"),
161
help="Do not use rsvg to produce antialiased output."),
162
Option('merge-branch', type=str,
163
help="Use this branch to calcuate a merge base."),
160
164
Option('cluster', help="Use clustered output."),
161
Option('max-distance', help="Show no nodes farther than this",
163
def run(self, branch, file, no_collapse=False, no_antialias=False,
164
merge_branch=None, cluster=False, max_distance=None):
165
Option('max-distance',
166
help="Show no nodes farther than this.", type=int),
168
help='Source branch to use (default is current'
173
def run(self, file, merge_branch=None, no_collapse=False,
174
no_antialias=False, cluster=False, max_distance=100,
176
if max_distance == -1:
167
180
ranking = "cluster"
169
182
ranking = "forced"
170
graph.write_ancestry_file(branch, file, not no_collapse,
171
not no_antialias, merge_branch, ranking,
183
graph.write_ancestry_file(directory, file, not no_collapse,
184
not no_antialias, merge_branch, ranking,
172
185
max_distance=max_distance)
179
192
aliases = ['fetch-missing']
180
193
takes_args = ['branch?']
181
takes_options = [Option('no-fix')]
194
takes_options = [Option('no-fix', help="Skip additional synchonization.")]
182
195
def run(self, branch=None, no_fix=False):
183
196
from fetch_ghosts import fetch_ghosts
184
197
fetch_ghosts(branch, no_fix)
193
206
takes_args = ['filename?']
194
207
takes_options = [Option('strip', type=int, help=strip_help),
195
Option('silent', help='Suppress chatter')]
208
Option('silent', help='Suppress chatter.')]
196
209
def run(self, filename=None, strip=None, silent=False):
197
210
from patch import patch
198
211
from bzrlib.workingtree import WorkingTree
235
248
takes_args = ['file*']
236
takes_options = ['message', 'revision',
237
Option('all', help='Shelve all changes without prompting'),
238
Option('no-color', help='Never display changes in color')]
249
takes_options = [Option('message',
250
help='A message to associate with the shelved changes.',
253
Option('all', help='Shelve all changes without prompting.'),
254
Option('no-color', help='Never display changes in color.')]
240
256
def run(self, all=False, file_list=None, message=None, revision=None,
366
385
See 'shelve' for more information.
368
387
takes_options = [
369
Option('all', help='Unshelve all changes without prompting'),
370
Option('force', help='Force unshelving even if errors occur'),
371
Option('no-color', help='Never display changes in color')
388
Option('all', help='Unshelve all changes without prompting.'),
389
Option('force', help='Force unshelving even if errors occur.'),
390
Option('no-color', help='Never display changes in color.')
373
392
takes_args = ['patch?']
374
393
def run(self, patch=None, all=False, force=False, no_color=False):
375
394
source = BzrPatchSource()
376
s = Shelf(source.base)
395
s = shelf.Shelf(source.base)
377
396
s.unshelve(source, patch, all, force, no_color)
426
445
If --branch is specified, the branch will be deleted too, but only if the
427
446
the branch has no new commits (relative to its parent).
429
takes_options = [Option("branch", help="Remove associtated branch from"
448
takes_options = [Option("branch", help="Remove associated branch from"
431
450
takes_args = ["checkout"]
432
451
def run(self, checkout, branch=False):
433
452
from zap import zap
447
466
cbranch_target:policy = appendpath
449
468
This will mean that if you run "bzr cbranch foo/bar foo/baz" in the
450
working directory root, the branch will be created in
469
working directory root, the branch will be created in
451
470
"/branch_root/foo/baz"
453
472
NOTE: cbranch also supports "cbranch_root", but that behaviour is
456
takes_options = [Option("lightweight",
457
help="Create a lightweight checkout"), 'revision']
475
takes_options = [Option("lightweight",
476
help="Create a lightweight checkout."), 'revision']
458
477
takes_args = ["source", "target?"]
459
478
def run(self, source, target=None, lightweight=False, revision=None):
460
479
from cbranch import cbranch
461
return cbranch(source, target, lightweight=lightweight,
480
return cbranch(source, target, lightweight=lightweight,
462
481
revision=revision)
522
541
These marks can be used to track a branch's status.
524
543
takes_args = ['mark?', 'branch?']
525
takes_options = [Option('delete', help='Delete this mark')]
544
takes_options = [Option('delete', help='Delete this mark.')]
526
545
def run(self, mark=None, branch=None, delete=False):
527
546
from branch_mark import branch_mark
528
547
branch_mark(mark, branch, delete)
531
550
class cmd_import(bzrlib.commands.Command):
532
551
"""Import sources from a directory, tarball or zip file
534
553
This command will import a directory, tarball or zip file into a bzr
535
554
tree, replacing any versioned files already present. If a directory is
536
555
specified, it is used as the target. If the directory does not exist, or
541
560
If the tarball or zip has a single root directory, that directory is
542
561
stripped when extracting the tarball. This is not done for directories.
545
564
takes_args = ['source', 'tree?']
546
565
def run(self, source, tree=None):
547
566
from upstream_import import do_import
572
591
This command should be used on local archives (or mirrors) only. It is
573
592
quite slow on remote archives.
575
reuse_history allows you to specify any previous imports you
594
reuse_history allows you to specify any previous imports you
576
595
have done of different archives, which this archive has branches
577
tagged from. This will dramatically reduce the time to convert
596
tagged from. This will dramatically reduce the time to convert
578
597
the archive as it will not have to convert the history already
579
598
converted in that other branch.
594
613
takes_args = ['to_root_dir', 'from_archive', 'reuse_history*']
595
614
takes_options = ['verbose', Option('prefixes', type=str,
596
help="Prefixes of branches to import, colon-separated"),
597
Option('encoding', type=str,
615
help="Prefixes of branches to import, colon-separated."),
616
Option('encoding', type=str,
598
617
help='Force encoding to specified value. See WARNING.')]
600
619
def run(self, to_root_dir, from_archive, encoding=None, verbose=False,
621
640
takes_args = ['to_location', 'from_branch?', 'reuse_history*']
622
641
takes_options = ['verbose', Option('max-count', type=int),
623
Option('encoding', type=str,
642
Option('encoding', type=str,
624
643
help='Force encoding to specified value. See WARNING.')]
626
645
def run(self, to_location, from_branch=None, fast=False, max_count=None,
629
648
from errors import NoPyBaz
631
650
import baz_import
632
baz_import.baz_import_branch(to_location, from_branch, fast,
651
baz_import.baz_import_branch(to_location, from_branch, fast,
633
652
max_count, verbose, encoding, dry_run,
634
653
reuse_history_list)
639
658
class cmd_rspush(bzrlib.commands.Command):
640
659
"""Upload this branch to another location using rsync.
642
If no location is specified, the last-used location will be used. To
643
prevent dirty trees from being uploaded, rspush will error out if there are
644
unknown files or local changes. It will also error out if the upstream
645
directory is non-empty and not an earlier version of the branch.
661
If no location is specified, the last-used location will be used. To
662
prevent dirty trees from being uploaded, rspush will error out if there are
663
unknown files or local changes. It will also error out if the upstream
664
directory is non-empty and not an earlier version of the branch.
647
666
takes_args = ['location?']
648
667
takes_options = [Option('overwrite', help='Ignore differences between'
649
' branches and overwrite unconditionally'),
668
' branches and overwrite unconditionally.'),
650
669
Option('no-tree', help='Do not push the working tree,'
651
670
' just the .bzr.')]
654
673
from bzrlib import workingtree
656
675
cur_branch = workingtree.WorkingTree.open_containing(".")[0]
657
bzrtools.rspush(cur_branch, location, overwrite=overwrite,
676
bzrtools.rspush(cur_branch, location, overwrite=overwrite,
658
677
working_tree=not no_tree)