16
16
# along with this program; if not, write to the Free Software
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
21
from bzrlib.lazy_import import lazy_import
40
38
from bzrlib.errors import BzrCommandError
41
39
import bzrlib.ignores
42
40
from bzrlib.trace import note
43
from bzrlib.option import Option, RegistryOption
44
from bzrlib.workingtree import WorkingTree
41
from bzrlib.option import Option
46
43
from command import BzrToolsCommand
46
class cmd_clean_tree(BzrToolsCommand):
47
"""Remove unwanted files from working tree.
49
By default, only unknown files, not ignored files, are deleted. Versioned
50
files are never deleted.
52
Another class is 'detritus', which includes files emitted by bzr during
53
normal operations and selftests. (The value of these files decreases with
56
If no options are specified, unknown files are deleted. Otherwise, option
57
flags are respected, and may be combined.
59
To check what clean-tree will do, use --dry-run.
61
takes_options = [Option('ignored', help='Delete all ignored files.'),
62
Option('detritus', help='Delete conflict files, merge'
63
' backups, and failed selftest dirs.'),
65
help='Delete files unknown to bzr (default).'),
66
Option('dry-run', help='Show files to delete instead of'
68
Option('force', help='Do not prompt before deleting.')]
69
def run(self, unknown=False, ignored=False, detritus=False, dry_run=False,
71
from clean_tree import clean_tree
72
if not (unknown or ignored or detritus):
76
clean_tree('.', unknown=unknown, ignored=ignored, detritus=detritus,
77
dry_run=dry_run, no_prompt=force)
49
80
class cmd_graph_ancestry(BzrToolsCommand):
50
81
"""Produce ancestry graphs using dot.
120
151
takes_options = [Option('no-fix', help="Skip additional synchonization.")]
121
152
def run(self, branch=None, no_fix=False):
122
153
from fetch_ghosts import fetch_ghosts
123
fetch_ghosts(branch, do_reconcile=not no_fix)
154
fetch_ghosts(branch, no_fix)
125
156
strip_help="""Strip the smallest prefix containing num leading slashes from \
126
157
each file name found in the patch file."""
130
161
"""Apply a named patch to the current tree.
132
163
takes_args = ['filename?']
133
takes_options = [Option('strip', type=int, short_name='p',
164
takes_options = [Option('strip', type=int, help=strip_help),
135
165
Option('silent', help='Suppress chatter.')]
136
166
def run(self, filename=None, strip=None, silent=False):
137
167
from patch import patch
169
199
don't depend on each other.
171
201
While you have patches on the shelf you can view and manipulate them with
172
the 'shelf1' command. Run 'bzr shelf1 -h' for more info.
202
the 'shelf' command. Run 'bzr shelf -h' for more info.
175
206
takes_args = ['file*']
176
207
takes_options = [Option('message',
177
208
help='A message to associate with the shelved changes.',
198
# The following classes are only used as subcommands for 'shelf1', they're
229
# The following classes are only used as subcommands for 'shelf', they're
199
230
# not to be registered directly with bzr.
201
232
class cmd_shelf_list(bzrlib.commands.Command):
312
343
See 'shelve1' for more information.
345
aliases = ['unshelve']
314
346
takes_options = [
315
347
Option('all', help='Unshelve all changes without prompting.'),
316
348
Option('force', help='Force unshelving even if errors occur.'),
502
534
"""A color version of bzr's diff"""
503
535
takes_args = property(lambda x: get_cmd_object('diff').takes_args)
504
536
takes_options = list(get_cmd_object('diff').takes_options) + [
505
RegistryOption.from_kwargs('color',
506
'Color mode to use.',
507
title='Color Mode', value_switches=False, enum_switch=True,
508
never='Never colorize output.',
509
auto='Only colorize output if terminal supports it and STDOUT is a'
511
always='Always colorize output (default).'),
512
537
Option('check-style',
513
538
help='Warn if trailing whitespace or spurious changes have been'
516
def run(self, color='always', check_style=False, *args, **kwargs):
541
def run(self, check_style=False, *args, **kwargs):
517
542
from colordiff import colordiff
518
colordiff(color, check_style, *args, **kwargs)
521
class cmd_conflict_diff(BzrToolsCommand):
523
"""Compare a conflicted file against BASE."""
525
encoding_type = 'exact'
526
takes_args = ['file']
528
RegistryOption.from_kwargs('direction', 'Direction of comparison.',
529
value_switches=True, enum_switch=False,
530
other='Compare OTHER against common base.',
531
this='Compare THIS against common base.')]
533
def run(self, file, direction='other'):
534
from bzrlib.plugins.bzrtools.colordiff import DiffWriter
535
from conflict_diff import conflict_diff
536
dw = DiffWriter(self.outf, check_style=False, color='auto')
537
conflict_diff(dw, file, direction)
543
colordiff(check_style, *args, **kwargs)
540
546
class cmd_rspush(BzrToolsCommand):
580
586
source_tree.unlock()
582
588
target_tree.unlock()
585
class cmd_create_mirror(BzrToolsCommand):
586
"""Create a mirror of another branch.
588
This is similar to `bzr branch`, but copies more settings, including the
589
submit branch and nickname.
591
It sets the public branch and parent of the target to the source location.
594
takes_args = ['source', 'target']
596
def run(self, source, target):
597
source_branch = Branch.open(source)
598
from bzrlib.plugins.bzrtools.mirror import create_mirror
599
create_mirror(source_branch, target, [])