1
# Copyright (C) 2005, 2006, 2007 Aaron Bentley <aaron.bentley@utoronto.ca>
1
# Copyright (C) 2005, 2006 Aaron Bentley <aaron.bentley@utoronto.ca>
2
2
# Copyright (C) 2005, 2006 Canonical Limited.
3
3
# Copyright (C) 2006 Michael Ellerman.
47
47
# get the message out any way we can
48
48
from warnings import warn as warning
49
49
if bzrlib_version < desired:
50
warning('Installed Bazaar version %s is too old to be used with'
52
'"Bzrtools" %s.' % (bzrlib.__version__, __version__))
50
warning('Installed bzr version %s is too old to be used with bzrtools'
51
' %s.' % (bzrlib.__version__, __version__))
53
52
# Not using BzrNewError, because it may not exist.
54
53
raise Exception, ('Version mismatch', version_info)
56
warning('Plugin "Bzrtools" is not up to date with installed Bazaar'
58
' There should be a newer version of Bzrtools available, e.g.'
55
warning('Bzrtools is not up to date with installed bzr version %s.'
56
' \nThere should be a newer version available, e.g. %i.%i.'
60
57
% (bzrlib.__version__, bzrlib_version[0], bzrlib_version[1]))
61
58
if bzrlib_version != desired_plus:
62
59
raise Exception, 'Version mismatch'
65
62
check_bzrlib_version(version_info[:2])
67
from bzrlib.lazy_import import lazy_import
68
lazy_import(globals(), """
69
from bzrlib import help
73
65
from errors import CommandError, NoPyBaz
74
66
from patchsource import BzrPatchSource
67
from shelf import Shelf
79
72
import bzrlib.commands
80
73
from bzrlib.commands import get_cmd_object
81
74
from bzrlib.errors import BzrCommandError
75
from bzrlib.help import command_usage
82
76
import bzrlib.ignores
83
77
from bzrlib.option import Option
84
78
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__),
160
154
help="Do not use rsvg to produce antialiased output"),
161
155
Option('merge-branch', type=str,
162
156
help="Use this branch to calcuate a merge base"),
163
Option('cluster', help="Use clustered output."),
164
Option('max-distance', help="Show no nodes farther than this",
157
Option('cluster', help="Use clustered output.")]
166
158
def run(self, branch, file, no_collapse=False, no_antialias=False,
167
merge_branch=None, cluster=False, max_distance=None):
159
merge_branch=None, cluster=False):
170
162
ranking = "cluster"
172
164
ranking = "forced"
173
165
graph.write_ancestry_file(branch, file, not no_collapse,
174
not no_antialias, merge_branch, ranking,
175
max_distance=max_distance)
166
not no_antialias, merge_branch, ranking)
178
169
class cmd_fetch_ghosts(bzrlib.commands.Command):
194
185
"""Apply a named patch to the current tree.
196
187
takes_args = ['filename?']
197
takes_options = [Option('strip', type=int, help=strip_help),
198
Option('silent', help='Suppress chatter')]
199
def run(self, filename=None, strip=None, silent=False):
188
takes_options = [Option('strip', type=int, help=strip_help)]
189
def run(self, filename=None, strip=None):
200
190
from patch import patch
201
191
from bzrlib.workingtree import WorkingTree
202
192
wt = WorkingTree.open_containing('.')[0]
203
193
if strip is None:
205
return patch(wt, filename, strip, silent)
195
return patch(wt, filename, strip)
208
198
class cmd_shelve(bzrlib.commands.Command):
252
242
source = BzrPatchSource(revision, file_list)
253
s = shelf.Shelf(source.base)
243
s = Shelf(source.base)
254
244
s.shelve(source, all, message, no_color)
278
268
aliases = ['switch']
279
269
takes_args = ['othershelf']
280
270
def run(self, othershelf):
281
s = shelf.Shelf(self.shelf.base, othershelf)
271
s = Shelf(self.shelf.base, othershelf)
312
302
cmd = self._get_cmd_object(subcommand)
313
303
source = BzrPatchSource()
314
s = shelf.Shelf(source.base)
304
s = Shelf(source.base)
317
if args_list is None:
319
306
return cmd.run_argv_aliases(args_list)
321
308
def _get_cmd_object(self, cmd_name):
379
366
takes_args = ['patch?']
380
367
def run(self, patch=None, all=False, force=False, no_color=False):
381
368
source = BzrPatchSource()
382
s = shelf.Shelf(source.base)
369
s = Shelf(source.base)
383
370
s.unshelve(source, patch, all, force, no_color)
445
432
Create a new checkout, associated with a new repository branch.
447
When you cbranch, bzr looks up a target location in locations.conf, and
448
creates the branch there.
450
In your locations.conf, add the following lines:
451
[/working_directory_root]
452
cbranch_target = /branch_root
453
cbranch_target:policy = appendpath
455
This will mean that if you run "bzr cbranch foo/bar foo/baz" in the
456
working directory root, the branch will be created in
457
"/branch_root/foo/baz"
459
NOTE: cbranch also supports "cbranch_root", but that behaviour is
434
When you cbranch, bzr looks up the repository associated with your current
435
directory in locations.conf. It creates a new branch in that repository
436
with the same name and relative path as the checkout you request.
438
The locations.conf parameter is "cbranch_root". So if you want
439
cbranch operations in /home/jrandom/bigproject to produce branches in
440
/home/jrandom/bigproject/repository, you'd add this:
442
[/home/jrandom/bigproject]
443
cbranch_root = /home/jrandom/bigproject/repository
445
Note that if "/home/jrandom/bigproject/repository" isn't a repository,
446
standalone branches will be produced. Standalone branches will also
447
be produced if the source branch is in 0.7 format (or earlier).
462
449
takes_options = [Option("lightweight",
463
450
help="Create a lightweight checkout"), 'revision']
537
524
class cmd_import(bzrlib.commands.Command):
538
"""Import sources from a directory, tarball or zip file
525
"""Import sources from a tarball or zip file
540
This command will import a directory, tarball or zip file into a bzr
541
tree, replacing any versioned files already present. If a directory is
542
specified, it is used as the target. If the directory does not exist, or
543
is not versioned, it is created.
527
This command will import a tarball or zip file into a bzr tree, replacing
528
any versioned files already present. If a directory is specified, it is
529
used as the target. If the directory does not exist, or is not versioned,
545
532
Tarballs may be gzip or bzip2 compressed. This is autodetected.
547
If the tarball or zip has a single root directory, that directory is
548
stripped when extracting the tarball. This is not done for directories.
534
If the tarball has a single root directory, that directory is stripped
535
when extracting the tarball.
551
538
takes_args = ['source', 'tree?']
557
544
class cmd_cdiff(bzrlib.commands.Command):
558
545
"""A color version of bzr's diff"""
559
546
takes_args = property(lambda x: get_cmd_object('diff').takes_args)
561
def _takes_options(self):
562
options = list(get_cmd_object('diff').takes_options)
563
options.append(Option('check-style',
564
help='Warn if trailing whitespace or spurious changes have been'
568
takes_options = property(_takes_options)
570
def run(self, check_style=False, *args, **kwargs):
547
takes_options = property(lambda x: get_cmd_object('diff').takes_options)
548
def run(*args, **kwargs):
571
549
from colordiff import colordiff
572
colordiff(check_style, *args, **kwargs)
550
colordiff(*args, **kwargs)
575
553
class cmd_baz_import(bzrlib.commands.Command):
726
703
result.addTest(tests.test_suite())
727
704
result.addTest(TestLoader().loadTestsFromModule(tests.shelf_tests))
728
705
result.addTest(tests.blackbox.test_suite())
729
result.addTest(tests.upstream_import.test_suite())
706
result.addTest(upstream_import.test_suite())
730
707
result.addTest(zap.test_suite())
731
result.addTest(TestLoader().loadTestsFromModule(tests.is_clean))