/stdhome

To get this branch, use:
bzr branch http://bzr.ed.am/stdhome

« back to all changes in this revision

Viewing changes to lib/stdhome/command/diff.py

  • Committer: Tim Marston
  • Date: 2014-03-08 00:47:23 UTC
  • Revision ID: tim@ed.am-20140308004723-hkl3s2hobsblf72o
added diff command; moved all command to commands subdir; made stage-revert
handle ongoing deployment automatically (now that initial revno is known); made
verbose level incremental; detect obstructing conflicts in ConflictWalker;
handle files deleted from repo during copy-out (update)

Show diffs side-by-side

added added

removed removed

30
30
class DiffCommand( Command ):
31
31
 
32
32
 
 
33
        def __init__( self ):
 
34
                self.repo = None
 
35
 
 
36
 
33
37
        def print_help( self ):
34
38
                print "Usage: " + the.program.name + " diff [--repo=REPO] [FILE]..."
35
39
                print
58
62
                        [ "repo=", "verbose", "help" ] )
59
63
                for opt, optarg in opts:
60
64
                        if opt in [ '--repo', '-r' ]:
61
 
                                if not re.search( '^[-a-zA-z0-9.]+$', optarg ):
 
65
                                if not re.match( '^[-a-zA-z0-9.]+$', optarg ):
62
66
                                        raise the.program.FatalError(
63
67
                                                'invalid repository name: ' + optarg )
64
 
                                the.repo = optarg
 
68
                                self.repo = optarg
65
69
                        elif opt in [ '--verbose', '-v' ]:
66
70
                                the.verbose += 1
67
71
                        elif opt == "--help":
68
72
                                self.print_help()
69
 
 
 
73
                
70
74
                # discard first argument (the command)
71
75
                args.pop( 0 )
72
76
 
77
81
        def run( self ):
78
82
 
79
83
                # set up repo and check it exists
 
84
                the.set_repo( self.repo )
80
85
                the.repo.check_dir_exists()
81
86
 
82
87
                # determine files
101
106
                # call colordiff
102
107
                for file in walker.modified:
103
108
                        print ( "\033[33m=== modified '%s'\n" % file ).rstrip()
104
 
                        sys.stdout.flush()
105
109
                        call( [ 'colordiff', '-ud',
106
110
                                        '--label', file,
107
111
                                        os.path.join( the.repo.full_dir, file ),