~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/diff.py

  • Committer: Martin Pool
  • Date: 2005-05-11 02:48:39 UTC
  • Revision ID: mbp@sourcefrog.net-20050511024839-7da25dca4d8c8bac
- diff now uses stat-cache -- much faster

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
    ## XXX: This doesn't report on unknown files; that can be done
50
50
    ## from a separate method.
51
51
 
 
52
    sha_match_cnt = modified_cnt = 0
 
53
 
52
54
    old_it = old_tree.list_files()
53
55
    new_it = new_tree.list_files()
54
56
 
77
79
        else:
78
80
            new_name = None
79
81
 
80
 
        mutter("   diff pairwise %r" % (old_item,))
81
 
        mutter("                 %r" % (new_item,))
82
 
 
83
82
        if old_item:
84
83
            # can't handle the old tree being a WorkingTree
85
84
            assert old_class == 'V'
88
87
            yield new_class, None, None, new_name, new_kind
89
88
            new_item = next(new_it)
90
89
        elif (not new_item) or (old_item and (old_name < new_name)):
91
 
            mutter("     extra entry in old-tree sequence")
92
90
            if new_tree.has_id(old_id):
93
91
                # will be mentioned as renamed under new name
94
92
                pass
96
94
                yield 'D', old_id, old_name, None, old_kind
97
95
            old_item = next(old_it)
98
96
        elif (not old_item) or (new_item and (new_name < old_name)):
99
 
            mutter("     extra entry in new-tree sequence")
100
97
            if old_tree.has_id(new_id):
101
98
                yield 'R', new_id, old_tree.id2path(new_id), new_name, new_kind
102
99
            else:
124
121
 
125
122
            if old_kind == 'directory':
126
123
                yield '.', new_id, old_name, new_name, new_kind
127
 
            elif old_tree.get_file_size(old_id) != new_tree.get_file_size(old_id):
128
 
                mutter("    file size has changed, must be different")
129
 
                yield 'M', new_id, old_name, new_name, new_kind
130
124
            elif old_tree.get_file_sha1(old_id) == new_tree.get_file_sha1(old_id):
131
 
                mutter("      SHA1 indicates they're identical")
132
 
                ## assert compare_files(old_tree.get_file(i), new_tree.get_file(i))
 
125
                sha_match_cnt += 1
133
126
                yield '.', new_id, old_name, new_name, new_kind
134
127
            else:
135
 
                mutter("      quick compare shows different")
 
128
                modified_cnt += 1
136
129
                yield 'M', new_id, old_name, new_name, new_kind
137
130
 
138
131
            new_item = next(new_it)
139
132
            old_item = next(old_it)
140
133
 
141
134
 
 
135
    mutter("diff finished: %d SHA matches, %d modified"
 
136
           % (sha_match_cnt, modified_cnt))
 
137
 
 
138
 
142
139
 
143
140
def show_diff(b, revision, file_list):
144
141
    import difflib, sys, types