~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to command_classes.py

  • Committer: Aaron Bentley
  • Date: 2011-09-25 01:18:55 UTC
  • mfrom: (776.2.1 unused-imports)
  • Revision ID: aaron@aaronbentley.com-20110925011855-3dil4ijgluvzq7q5
Remove unused imports, fix the importing of two error classes. (jelmer)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2005, 2006, 2007 Aaron Bentley <aaron@aaronbentley.com>
2
 
# Copyright (C) 2005, 2006 Canonical Limited.
 
2
# Copyright (C) 2005, 2006, 2011 Canonical Limited.
3
3
# Copyright (C) 2006 Michael Ellerman.
4
4
#
5
5
#    This program is free software; you can redistribute it and/or modify
27
27
from command import BzrToolsCommand
28
28
from errors import CommandError
29
29
from patchsource import BzrPatchSource
30
 
import sys
31
 
import os.path
32
30
 
33
 
import bzrlib.builtins
34
31
import bzrlib.commands
35
32
from bzrlib.branch import Branch
36
 
from bzrlib.bzrdir import BzrDir
37
33
from bzrlib.commands import get_cmd_object
38
34
from bzrlib.errors import BzrCommandError
39
 
import bzrlib.ignores
40
 
from bzrlib.trace import note
41
35
from bzrlib.option import Option, RegistryOption
42
36
 
43
 
from command import BzrToolsCommand
44
 
 
45
 
 
46
 
class cmd_clean_tree(BzrToolsCommand):
47
 
    """Remove unwanted files from working tree.
48
 
 
49
 
    By default, only unknown files, not ignored files, are deleted.  Versioned
50
 
    files are never deleted.
51
 
 
52
 
    Another class is 'detritus', which includes files emitted by bzr during
53
 
    normal operations and selftests.  (The value of these files decreases with
54
 
    time.)
55
 
 
56
 
    If no options are specified, unknown files are deleted.  Otherwise, option
57
 
    flags are respected, and may be combined.
58
 
 
59
 
    To check what clean-tree will do, use --dry-run.
60
 
    """
61
 
    takes_options = [Option('ignored', help='Delete all ignored files.'),
62
 
                     Option('detritus', help='Delete conflict files, merge'
63
 
                            ' backups, and failed selftest dirs.'),
64
 
                     Option('unknown',
65
 
                            help='Delete files unknown to bzr (default).'),
66
 
                     Option('dry-run', help='Show files to delete instead of'
67
 
                            ' deleting them.'),
68
 
                     Option('force', help='Do not prompt before deleting.')]
69
 
    def run(self, unknown=False, ignored=False, detritus=False, dry_run=False,
70
 
            force=False):
71
 
        from clean_tree import clean_tree
72
 
        if not (unknown or ignored or detritus):
73
 
            unknown = True
74
 
        if dry_run:
75
 
            force = True
76
 
        clean_tree('.', unknown=unknown, ignored=ignored, detritus=detritus, 
77
 
                   dry_run=dry_run, no_prompt=force)
78
 
 
79
37
 
80
38
class cmd_graph_ancestry(BzrToolsCommand):
81
39
    """Produce ancestry graphs using dot.
82
 
    
 
40
 
83
41
    Output format is detected according to file extension.  Some of the more
84
42
    common output formats are html, png, gif, svg, ps.  An extension of '.dot'
85
43
    will cause a dot graph file to be produced.  HTML output has mouseovers
151
109
    takes_options = [Option('no-fix', help="Skip additional synchonization.")]
152
110
    def run(self, branch=None, no_fix=False):
153
111
        from fetch_ghosts import fetch_ghosts
154
 
        fetch_ghosts(branch, no_fix)
 
112
        fetch_ghosts(branch, do_reconcile=not no_fix)
155
113
 
156
114
strip_help="""Strip the smallest prefix containing num leading slashes  from \
157
115
each file name found in the patch file."""
161
119
    """Apply a named patch to the current tree.
162
120
    """
163
121
    takes_args = ['filename?']
164
 
    takes_options = [Option('strip', type=int, help=strip_help),
 
122
    takes_options = [Option('strip', type=int, short_name='p',
 
123
                            help=strip_help),
165
124
                     Option('silent', help='Suppress chatter.')]
166
125
    def run(self, filename=None, strip=None, silent=False):
167
126
        from patch import patch
199
158
    don't depend on each other.
200
159
 
201
160
    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.
 
161
    the 'shelf1' command. Run 'bzr shelf1 -h' for more info.
203
162
    """
204
163
 
205
 
    aliases = ['shelve']
206
164
    takes_args = ['file*']
207
165
    takes_options = [Option('message',
208
166
            help='A message to associate with the shelved changes.',
226
184
        return 0
227
185
 
228
186
 
229
 
# The following classes are only used as subcommands for 'shelf', they're
 
187
# The following classes are only used as subcommands for 'shelf1', they're
230
188
# not to be registered directly with bzr.
231
189
 
232
190
class cmd_shelf_list(bzrlib.commands.Command):
268
226
        self.shelf.upgrade()
269
227
 
270
228
 
271
 
class cmd_shelf(BzrToolsCommand):
 
229
class cmd_shelf1(BzrToolsCommand):
272
230
    """Perform various operations on your shelved patches. See also shelve1."""
273
231
    takes_args = ['subcommand', 'args*']
274
232
 
342
300
 
343
301
    See 'shelve1' for more information.
344
302
    """
345
 
    aliases = ['unshelve']
346
303
    takes_options = [
347
304
            Option('all', help='Unshelve all changes without prompting.'),
348
305
            Option('force', help='Force unshelving even if errors occur.'),
374
331
    --all        --help       --revision   --show-ids
375
332
    bzr bzrtools:287/> status --
376
333
    """
377
 
    def run(self):
 
334
    takes_options = [
 
335
        Option('directory',
 
336
            help='Branch in which to start the shell, '
 
337
                 'rather than the one containing the working directory.',
 
338
            short_name='d',
 
339
            type=unicode,
 
340
            ),
 
341
        ]
 
342
    def run(self, directory=None):
378
343
        import shell
379
 
        return shell.run_shell()
 
344
        return shell.run_shell(directory)
380
345
 
381
346
 
382
347
class cmd_branch_history(BzrToolsCommand):
403
368
 
404
369
    If --branch is specified, the branch will be deleted too, but only if the
405
370
    the branch has no new commits (relative to its parent).
 
371
 
 
372
    If bzr-pipeline is also installed, the --store option will store changes
 
373
    in the branch before deleting the tree.  To restore the changes, do::
 
374
 
 
375
      bzr checkout --lightweight $BRANCH $CHECKOUT
 
376
      bzr switch-pipe -d $CHECKOUT `bzr nick -d $CHECKOUT`
406
377
    """
407
378
    takes_options = [Option("branch", help="Remove associated branch from"
408
379
                                           " repository."),
409
 
                     Option('force', help='Delete tree even if contents are'
410
 
                     ' modified.')]
 
380
                     RegistryOption('change_policy',
 
381
                                    'How to handle changed files',
 
382
                                    lazy_registry =
 
383
                                    ('bzrlib.plugins.bzrtools.zap',
 
384
                                        'change_policy_registry'),
 
385
                                    value_switches=True,
 
386
                                    enum_switch=False)]
411
387
    takes_args = ["checkout"]
412
 
    def run(self, checkout, branch=False, force=False):
413
 
        from zap import zap
414
 
        return zap(checkout, remove_branch=branch, allow_modified=force)
 
388
    def run(self, checkout, branch=False, change_policy=None):
 
389
        from zap import (
 
390
            change_policy_registry,
 
391
            StoreChanges,
 
392
            zap,
 
393
        )
 
394
        if change_policy is None:
 
395
            change_policy = change_policy_registry.get()
 
396
        if change_policy is StoreChanges:
 
397
            try:
 
398
                import bzrlib.plugins.pipeline
 
399
            except ImportError:
 
400
                raise BzrCommandError('--store requires bzr-pipeline.')
 
401
        return zap(checkout, remove_branch=branch, policy=change_policy)
415
402
 
416
403
 
417
404
class cmd_cbranch(BzrToolsCommand):
540
527
            never='Never colorize output.',
541
528
            auto='Only colorize output if terminal supports it and STDOUT is a'
542
529
            ' TTY.',
543
 
            always='Always colorize ouput (default).'),
 
530
            always='Always colorize output (default).'),
544
531
        Option('check-style',
545
532
            help='Warn if trailing whitespace or spurious changes have been'
546
533
                 ' added.')]
550
537
        colordiff(color, check_style, *args, **kwargs)
551
538
 
552
539
 
 
540
class cmd_conflict_diff(BzrToolsCommand):
 
541
 
 
542
    """Compare a conflicted file against BASE."""
 
543
 
 
544
    encoding_type = 'exact'
 
545
    takes_args = ['file*']
 
546
    takes_options = [
 
547
        RegistryOption.from_kwargs('direction', 'Direction of comparison.',
 
548
            value_switches=True, enum_switch=False,
 
549
            other='Compare OTHER against common base.',
 
550
            this='Compare THIS against common base.')]
 
551
 
 
552
    def run(self, file_list, direction='other'):
 
553
        from bzrlib.plugins.bzrtools.colordiff import DiffWriter
 
554
        from conflict_diff import ConflictDiffer
 
555
        dw = DiffWriter(self.outf, check_style=False, color='auto')
 
556
        ConflictDiffer().run(dw, file_list, direction)
 
557
 
 
558
 
553
559
class cmd_rspush(BzrToolsCommand):
554
560
    """Upload this branch to another location using rsync.
555
561
 
593
599
                source_tree.unlock()
594
600
        finally:
595
601
            target_tree.unlock()
 
602
 
 
603
 
 
604
class cmd_create_mirror(BzrToolsCommand):
 
605
    """Create a mirror of another branch.
 
606
 
 
607
    This is similar to `bzr branch`, but copies more settings, including the
 
608
    submit branch and nickname.
 
609
 
 
610
    It sets the public branch and parent of the target to the source location.
 
611
    """
 
612
 
 
613
    takes_args = ['source', 'target']
 
614
 
 
615
    def run(self, source, target):
 
616
        source_branch = Branch.open(source)
 
617
        from bzrlib.plugins.bzrtools.mirror import create_mirror
 
618
        create_mirror(source_branch, target, [])