141
140
oldtmpf.close() # and delete
146
def show_diff(b, revision, specific_files, external_diff_options=None,
143
def show_diff(b, from_spec, specific_files, external_diff_options=None,
144
revision2=None, output=None):
148
145
"""Shortcut for showing the diff to the working tree.
154
None for each, or otherwise the old revision to compare against.
151
None for 'basis tree', or otherwise the old revision to compare against.
156
153
The more general form is show_diff_trees(), where the caller
157
154
supplies any two trees.
160
if from_spec is None:
162
161
old_tree = b.basis_tree()
164
old_tree = b.revision_tree(b.lookup_revision(revision))
163
old_tree = b.revision_tree(from_spec.in_history(b).rev_id)
166
if revision2 == None:
165
if revision2 is None:
167
166
new_tree = b.working_tree()
169
new_tree = b.revision_tree(b.lookup_revision(revision2))
168
new_tree = b.revision_tree(revision2.in_history(b).rev_id)
171
show_diff_trees(old_tree, new_tree, sys.stdout, specific_files,
170
show_diff_trees(old_tree, new_tree, output, specific_files,
172
171
external_diff_options)
209
208
specific_files=specific_files)
211
210
for path, file_id, kind in delta.removed:
212
print >>to_file, '*** removed %s %r' % (kind, path)
214
diff_file(old_label + path,
215
old_tree.get_file(file_id).readlines(),
211
print >>to_file, '=== removed %s %r' % (kind, path)
212
old_tree.inventory[file_id].diff(diff_file, old_label + path, old_tree,
213
DEVNULL, None, None, to_file)
220
214
for path, file_id, kind in delta.added:
221
print >>to_file, '*** added %s %r' % (kind, path)
226
new_tree.get_file(file_id).readlines(),
229
for old_path, new_path, file_id, kind, text_modified in delta.renamed:
230
print >>to_file, '*** renamed %s %r => %r' % (kind, old_path, new_path)
215
print >>to_file, '=== added %s %r' % (kind, path)
216
new_tree.inventory[file_id].diff(diff_file, new_label + path, new_tree,
217
DEVNULL, None, None, to_file,
219
for (old_path, new_path, file_id, kind,
220
text_modified, meta_modified) in delta.renamed:
221
prop_str = get_prop_change(meta_modified)
222
print >>to_file, '=== renamed %s %r => %r%s' % (
223
kind, old_path, new_path, prop_str)
224
_maybe_diff_file_or_symlink(old_label, old_path, old_tree, file_id,
225
new_label, new_path, new_tree,
226
text_modified, kind, to_file, diff_file)
227
for path, file_id, kind, text_modified, meta_modified in delta.modified:
228
prop_str = get_prop_change(meta_modified)
229
print >>to_file, '=== modified %s %r%s' % (kind, path, prop_str)
231
230
if text_modified:
232
diff_file(old_label + old_path,
233
old_tree.get_file(file_id).readlines(),
234
new_label + new_path,
235
new_tree.get_file(file_id).readlines(),
238
for path, file_id, kind in delta.modified:
239
print >>to_file, '*** modified %s %r' % (kind, path)
241
diff_file(old_label + path,
242
old_tree.get_file(file_id).readlines(),
244
new_tree.get_file(file_id).readlines(),
231
_maybe_diff_file_or_symlink(old_label, path, old_tree, file_id,
232
new_label, path, new_tree,
233
True, kind, to_file, diff_file)
236
def get_prop_change(meta_modified):
238
return " (properties changed)"
243
def _maybe_diff_file_or_symlink(old_label, old_path, old_tree, file_id,
244
new_label, new_path, new_tree, text_modified,
245
kind, to_file, diff_file):
247
new_entry = new_tree.inventory[file_id]
248
old_tree.inventory[file_id].diff(diff_file,
249
old_label + old_path, old_tree,
250
new_label + new_path, new_entry,