279
@deprecated_function(one_zero)
280
def diff_cmd_helper(tree, specific_files, external_diff_options,
281
old_revision_spec=None, new_revision_spec=None,
283
old_label='a/', new_label='b/'):
284
"""Helper for cmd_diff.
289
:param specific_files:
290
The specific files to compare, or None
292
:param external_diff_options:
293
If non-None, run an external diff, and pass it these options
295
:param old_revision_spec:
296
If None, use basis tree as old revision, otherwise use the tree for
297
the specified revision.
299
:param new_revision_spec:
300
If None, use working tree as new revision, otherwise use the tree for
301
the specified revision.
303
:param revision_specs:
304
Zero, one or two RevisionSpecs from the command line, saying what revisions
305
to compare. This can be passed as an alternative to the old_revision_spec
306
and new_revision_spec parameters.
308
The more general form is show_diff_trees(), where the caller
309
supplies any two trees.
312
# TODO: perhaps remove the old parameters old_revision_spec and
313
# new_revision_spec, since this is only really for use from cmd_diff and
314
# it now always passes through a sequence of revision_specs -- mbp
319
revision = spec.in_store(tree.branch)
321
revision = spec.in_store(None)
322
revision_id = revision.rev_id
323
branch = revision.branch
324
return branch.repository.revision_tree(revision_id)
326
if revision_specs is not None:
327
assert (old_revision_spec is None
328
and new_revision_spec is None)
329
if len(revision_specs) > 0:
330
old_revision_spec = revision_specs[0]
331
if len(revision_specs) > 1:
332
new_revision_spec = revision_specs[1]
334
if old_revision_spec is None:
335
old_tree = tree.basis_tree()
337
old_tree = spec_tree(old_revision_spec)
339
if (new_revision_spec is None
340
or new_revision_spec.spec is None):
343
new_tree = spec_tree(new_revision_spec)
345
if new_tree is not tree:
346
extra_trees = (tree,)
350
return show_diff_trees(old_tree, new_tree, sys.stdout, specific_files,
351
external_diff_options,
352
old_label=old_label, new_label=new_label,
353
extra_trees=extra_trees)
356
278
def _get_trees_to_diff(path_list, revision_specs, old_url, new_url):
357
279
"""Get the trees and specific files to diff given a list of paths.