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
21
23
from bzrlib.lazy_import import lazy_import
39
41
import bzrlib.ignores
40
42
from bzrlib.trace import note
41
43
from bzrlib.option import Option, RegistryOption
44
from bzrlib.workingtree import WorkingTree
43
46
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)
80
49
class cmd_graph_ancestry(BzrToolsCommand):
81
50
"""Produce ancestry graphs using dot.
151
120
takes_options = [Option('no-fix', help="Skip additional synchonization.")]
152
121
def run(self, branch=None, no_fix=False):
153
122
from fetch_ghosts import fetch_ghosts
154
fetch_ghosts(branch, no_fix)
123
fetch_ghosts(branch, do_reconcile=not no_fix)
156
125
strip_help="""Strip the smallest prefix containing num leading slashes from \
157
126
each file name found in the patch file."""
199
168
don't depend on each other.
201
170
While you have patches on the shelf you can view and manipulate them with
202
the 'shelf' command. Run 'bzr shelf -h' for more info.
171
the 'shelf1' command. Run 'bzr shelf1 -h' for more info.
206
174
takes_args = ['file*']
207
175
takes_options = [Option('message',
208
176
help='A message to associate with the shelved changes.',
229
# The following classes are only used as subcommands for 'shelf', they're
197
# The following classes are only used as subcommands for 'shelf1', they're
230
198
# not to be registered directly with bzr.
232
200
class cmd_shelf_list(bzrlib.commands.Command):
268
236
self.shelf.upgrade()
271
class cmd_shelf(BzrToolsCommand):
239
class cmd_shelf1(BzrToolsCommand):
272
240
"""Perform various operations on your shelved patches. See also shelve1."""
273
241
takes_args = ['subcommand', 'args*']
343
311
See 'shelve1' for more information.
345
aliases = ['unshelve']
346
313
takes_options = [
347
314
Option('all', help='Unshelve all changes without prompting.'),
348
315
Option('force', help='Force unshelving even if errors occur.'),
550
517
colordiff(color, check_style, *args, **kwargs)
520
class cmd_conflict_diff(BzrToolsCommand):
522
"""Compare a conflicted file against BASE."""
524
encoding_type = 'exact'
525
takes_args = ['file']
527
RegistryOption.from_kwargs('direction', 'Direction of comparison.',
528
value_switches=True, enum_switch=False,
529
other='Compare OTHER against common base.',
530
this='Compare THIS against common base.')]
532
def run(self, file, direction='other'):
533
from bzrlib.plugins.bzrtools.colordiff import DiffWriter
534
from conflict_diff import conflict_diff
535
dw = DiffWriter(self.outf, check_style=False, color='auto')
536
conflict_diff(dw, file, direction)
553
539
class cmd_rspush(BzrToolsCommand):
554
540
"""Upload this branch to another location using rsync.
593
579
source_tree.unlock()
595
581
target_tree.unlock()
584
class cmd_create_mirror(BzrToolsCommand):
585
"""Create a mirror of another branch.
587
This is similar to `bzr branch`, but copies more settings, including the
588
submit branch and nickname.
590
It sets the public branch and parent of the target to the source location.
593
takes_args = ['source', 'target']
595
def run(self, source, target):
596
source_branch = Branch.open(source)
597
from bzrlib.plugins.bzrtools.mirror import create_mirror
598
create_mirror(source_branch, target, [])