~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to diffstat.py

  • Committer: Michael Ellerman
  • Date: 2005-11-29 01:41:52 UTC
  • mto: (0.3.1 shelf-dev) (325.1.2 bzrtools)
  • mto: This revision was merged to the branch mainline in revision 334.
  • Revision ID: michael@ellerman.id.au-20051129014152-f5ede8888bcebc48
HunkSelector was broken if you did a "done" followed by "status/invert" etc.
Fixup to make pychecker happy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
        self.total_adds = 0
8
8
        self.total_removes = 0
9
9
        self.stats = {}
10
 
        self.files = []
11
10
        self.__parse(lines)
12
11
 
13
12
    def __parse(self, lines):
30
29
                current = None
31
30
            elif line.startswith('--- ') and current is None:
32
31
                current = line[4:].strip()
33
 
            elif line.startswith('+++ ') and current == '/dev/null':
34
 
                current = line[4:].strip()
35
32
 
36
33
        self.__add_stats(current, adds, removes)
37
34
 
47
44
        elif file in self.stats:
48
45
            fstat = self.stats[file]
49
46
        else:
50
 
            self.files.append(file)
51
47
            fstat = self.Filestat()
52
48
 
53
49
        fstat.adds += adds
67
63
        graphwidth = width - countwidth - self.maxname
68
64
        factor = 1
69
65
 
70
 
        # The graph width can be <= 0 if there is a modified file with a
71
 
        # filename longer than 'width'. Use a minimum of 10.
72
 
        if graphwidth < 10:
73
 
            graphwidth = 10
74
 
 
75
66
        while (self.maxtotal / factor) > graphwidth:
76
67
            factor += 1
77
68
 
78
69
        s = ""
79
70
 
80
 
        for file in self.files:
81
 
            fstat = self.stats[file]
82
 
 
 
71
        for file, fstat in self.stats.iteritems():
83
72
            s += ' %-*s | %*.d ' % (self.maxname, file, countwidth, fstat.total)
84
73
 
85
74
            # If diffstat runs out of room it doesn't print anything, which
86
75
            # isn't very useful, so always print at least one + or 1
87
 
            if fstat.adds > 0:
88
 
                s += '+' * max(fstat.adds / factor, 1)
89
 
 
90
 
            if fstat.removes > 0:
91
 
                s += '-' * max(fstat.removes / factor, 1)
92
 
 
 
76
            s += '+' * max(fstat.adds / factor, 1)
 
77
            s += '-' * max(fstat.removes / factor, 1)
93
78
            s += '\n'
94
79
 
95
 
        if len(self.stats):
96
 
            s += ' %d files changed, %d insertions(+), %d deletions(-)' % \
 
80
        s += ' %d files changes, %d insertions(+), %d deletions(-)' % \
97
81
                (len(self.stats), self.total_adds, self.total_removes)
98
 
 
99
82
        return s
100
83
 
101
84
if __name__ == '__main__':