~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to command_classes.py

  • Committer: Aaron Bentley
  • Date: 2009-03-11 06:44:59 UTC
  • Revision ID: aaron@aaronbentley.com-20090311064459-mez7p4g64e2xz7x9
Implement conflict-diff

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
from bzrlib.errors import BzrCommandError
39
39
import bzrlib.ignores
40
40
from bzrlib.trace import note
41
 
from bzrlib.option import Option
 
41
from bzrlib.option import Option, RegistryOption
42
42
 
43
43
from command import BzrToolsCommand
44
44
 
45
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
 
 
80
46
class cmd_graph_ancestry(BzrToolsCommand):
81
47
    """Produce ancestry graphs using dot.
82
48
    
199
165
    don't depend on each other.
200
166
 
201
167
    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.
 
168
    the 'shelf1' command. Run 'bzr shelf1 -h' for more info.
203
169
    """
204
170
 
205
 
    aliases = ['shelve']
206
171
    takes_args = ['file*']
207
172
    takes_options = [Option('message',
208
173
            help='A message to associate with the shelved changes.',
226
191
        return 0
227
192
 
228
193
 
229
 
# The following classes are only used as subcommands for 'shelf', they're
 
194
# The following classes are only used as subcommands for 'shelf1', they're
230
195
# not to be registered directly with bzr.
231
196
 
232
197
class cmd_shelf_list(bzrlib.commands.Command):
268
233
        self.shelf.upgrade()
269
234
 
270
235
 
271
 
class cmd_shelf(BzrToolsCommand):
 
236
class cmd_shelf1(BzrToolsCommand):
272
237
    """Perform various operations on your shelved patches. See also shelve1."""
273
238
    takes_args = ['subcommand', 'args*']
274
239
 
342
307
 
343
308
    See 'shelve1' for more information.
344
309
    """
345
 
    aliases = ['unshelve']
346
310
    takes_options = [
347
311
            Option('all', help='Unshelve all changes without prompting.'),
348
312
            Option('force', help='Force unshelving even if errors occur.'),
534
498
    """A color version of bzr's diff"""
535
499
    takes_args = property(lambda x: get_cmd_object('diff').takes_args)
536
500
    takes_options = list(get_cmd_object('diff').takes_options) + [
 
501
        RegistryOption.from_kwargs('color',
 
502
            'Color mode to use.',
 
503
            title='Color Mode', value_switches=False, enum_switch=True,
 
504
            never='Never colorize output.',
 
505
            auto='Only colorize output if terminal supports it and STDOUT is a'
 
506
            ' TTY.',
 
507
            always='Always colorize output (default).'),
537
508
        Option('check-style',
538
509
            help='Warn if trailing whitespace or spurious changes have been'
539
510
                 ' added.')]
540
511
 
541
 
    def run(self, check_style=False, *args, **kwargs):
 
512
    def run(self, color='always', check_style=False, *args, **kwargs):
542
513
        from colordiff import colordiff
543
 
        colordiff(check_style, *args, **kwargs)
 
514
        colordiff(color, check_style, *args, **kwargs)
 
515
 
 
516
 
 
517
class cmd_conflict_diff(BzrToolsCommand):
 
518
 
 
519
    """Compare a conflicted file against BASE."""
 
520
 
 
521
    encoding_type = 'exact'
 
522
    takes_args = ['file']
 
523
    takes_options = [
 
524
        RegistryOption.from_kwargs('new', 'blah', value_switches=True,
 
525
            enum_switch=False,
 
526
            other='Compare OTHER against common base.',
 
527
            this='Compare THIS against common base.')]
 
528
 
 
529
    def run(self, file, new='other'):
 
530
        from bzrlib.diff import internal_diff
 
531
        from bzrlib.plugins.bzrtools.colordiff import DiffWriter
 
532
        dw = DiffWriter(self.outf, check_style=False, color='auto')
 
533
        old_path = file + '.BASE'
 
534
        if new == 'other':
 
535
            new_path = file + '.OTHER'
 
536
        else:
 
537
            new_path = file + '.THIS'
 
538
        oldlines = open(old_path).readlines()
 
539
        newlines = open(new_path).readlines()
 
540
        internal_diff(old_path, oldlines, new_path, newlines, dw)
544
541
 
545
542
 
546
543
class cmd_rspush(BzrToolsCommand):
586
583
                source_tree.unlock()
587
584
        finally:
588
585
            target_tree.unlock()
589
 
 
590
 
from heads import cmd_heads
591
 
commands = [
592
 
            cmd_branches,
593
 
            cmd_branch_history,
594
 
            cmd_cbranch,
595
 
            cmd_cdiff,
596
 
            cmd_clean_tree,
597
 
            cmd_fetch_ghosts,
598
 
            cmd_graph_ancestry,
599
 
            cmd_heads,
600
 
            cmd_import,
601
 
            cmd_link_tree,
602
 
            cmd_multi_pull,
603
 
            cmd_patch,
604
 
            cmd_rspush,
605
 
            cmd_shelf,
606
 
            cmd_shell,
607
 
            cmd_shelve1,
608
 
            cmd_trees,
609
 
            cmd_unshelve1,
610
 
            cmd_zap,
611
 
            ]
612