141
143
oldtmpf.close() # and delete
144
def show_diff(b, from_spec, specific_files, external_diff_options=None,
145
revision2=None, output=None, b2=None):
148
def show_diff(b, revision, specific_files, external_diff_options=None,
149
revision2=None, output=None):
146
150
"""Shortcut for showing the diff to the working tree.
152
None for 'basis tree', or otherwise the old revision to compare against.
156
None for each, or otherwise the old revision to compare against.
154
158
The more general form is show_diff_trees(), where the caller
155
159
supplies any two trees.
159
163
output = sys.stdout
161
if from_spec is None:
163
old_tree = b.basis_tree()
165
old_tree = b.working_tree()
167
old_tree = b.revision_tree(from_spec.in_history(b).rev_id)
169
if revision2 is None:
171
new_tree = b.working_tree()
173
new_tree = b2.working_tree()
175
new_tree = b.revision_tree(revision2.in_history(b).rev_id)
177
return show_diff_trees(old_tree, new_tree, output, specific_files,
178
external_diff_options)
166
old_tree = b.basis_tree()
168
old_tree = b.revision_tree(b.lookup_revision(revision))
170
if revision2 == None:
171
new_tree = b.working_tree()
173
new_tree = b.revision_tree(b.lookup_revision(revision2))
175
show_diff_trees(old_tree, new_tree, output, specific_files,
176
external_diff_options)
214
212
delta = compare_trees(old_tree, new_tree, want_unchanged=False,
215
213
specific_files=specific_files)
218
215
for path, file_id, kind in delta.removed:
220
216
print >>to_file, '=== removed %s %r' % (kind, path)
221
old_tree.inventory[file_id].diff(diff_file, old_label + path, old_tree,
222
DEVNULL, None, None, to_file)
218
diff_file(old_label + path,
219
old_tree.get_file(file_id).readlines(),
223
224
for path, file_id, kind in delta.added:
225
225
print >>to_file, '=== added %s %r' % (kind, path)
226
new_tree.inventory[file_id].diff(diff_file, new_label + path, new_tree,
227
DEVNULL, None, None, to_file,
229
for (old_path, new_path, file_id, kind,
230
text_modified, meta_modified) in delta.renamed:
232
prop_str = get_prop_change(meta_modified)
233
print >>to_file, '=== renamed %s %r => %r%s' % (
234
kind, old_path, new_path, prop_str)
235
_maybe_diff_file_or_symlink(old_label, old_path, old_tree, file_id,
236
new_label, new_path, new_tree,
237
text_modified, kind, to_file, diff_file)
238
for path, file_id, kind, text_modified, meta_modified in delta.modified:
240
prop_str = get_prop_change(meta_modified)
241
print >>to_file, '=== modified %s %r%s' % (kind, path, prop_str)
230
new_tree.get_file(file_id).readlines(),
233
for old_path, new_path, file_id, kind, text_modified in delta.renamed:
234
print >>to_file, '=== renamed %s %r => %r' % (kind, old_path, new_path)
242
235
if text_modified:
243
_maybe_diff_file_or_symlink(old_label, path, old_tree, file_id,
244
new_label, path, new_tree,
245
True, kind, to_file, diff_file)
249
def get_prop_change(meta_modified):
251
return " (properties changed)"
256
def _maybe_diff_file_or_symlink(old_label, old_path, old_tree, file_id,
257
new_label, new_path, new_tree, text_modified,
258
kind, to_file, diff_file):
260
new_entry = new_tree.inventory[file_id]
261
old_tree.inventory[file_id].diff(diff_file,
262
old_label + old_path, old_tree,
263
new_label + new_path, new_entry,
236
diff_file(old_label + old_path,
237
old_tree.get_file(file_id).readlines(),
238
new_label + new_path,
239
new_tree.get_file(file_id).readlines(),
242
for path, file_id, kind in delta.modified:
243
print >>to_file, '=== modified %s %r' % (kind, path)
245
diff_file(old_label + path,
246
old_tree.get_file(file_id).readlines(),
248
new_tree.get_file(file_id).readlines(),