14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
from __future__ import absolute_import
41
43
from bzrlib.workingtree import WorkingTree
44
from bzrlib.i18n import gettext
44
47
from bzrlib.registry import (
47
from bzrlib.symbol_versioning import (
51
50
from bzrlib.trace import mutter, note, warning
291
@deprecated_function(deprecated_in((2, 2, 0)))
292
def get_trees_and_branches_to_diff(path_list, revision_specs, old_url, new_url,
294
"""Get the trees and specific files to diff given a list of paths.
296
This method works out the trees to be diff'ed and the files of
297
interest within those trees.
300
the list of arguments passed to the diff command
301
:param revision_specs:
302
Zero, one or two RevisionSpecs from the diff command line,
303
saying what revisions to compare.
305
The url of the old branch or tree. If None, the tree to use is
306
taken from the first path, if any, or the current working tree.
308
The url of the new branch or tree. If None, the tree to use is
309
taken from the first path, if any, or the current working tree.
311
if True and a view is set, apply the view or check that the paths
314
a tuple of (old_tree, new_tree, old_branch, new_branch,
315
specific_files, extra_trees) where extra_trees is a sequence of
316
additional trees to search in for file-ids. The trees and branches
319
op = cleanup.OperationWithCleanups(get_trees_and_branches_to_diff_locked)
320
return op.run_simple(path_list, revision_specs, old_url, new_url,
321
op.add_cleanup, apply_view=apply_view)
324
290
def get_trees_and_branches_to_diff_locked(
325
291
path_list, revision_specs, old_url, new_url, add_cleanup, apply_view=True):
326
292
"""Get the trees and specific files to diff given a list of paths.
392
358
if old_url is None:
393
359
old_url = default_location
394
360
working_tree, branch, relpath = \
395
bzrdir.BzrDir.open_containing_tree_or_branch(old_url)
361
controldir.ControlDir.open_containing_tree_or_branch(old_url)
396
362
lock_tree_or_branch(working_tree, branch)
397
363
if consider_relpath and relpath != '':
398
364
if working_tree is not None and apply_view:
406
372
new_url = default_location
407
373
if new_url != old_url:
408
374
working_tree, branch, relpath = \
409
bzrdir.BzrDir.open_containing_tree_or_branch(new_url)
375
controldir.ControlDir.open_containing_tree_or_branch(new_url)
410
376
lock_tree_or_branch(working_tree, branch)
411
377
if consider_relpath and relpath != '':
412
378
if working_tree is not None and apply_view:
431
397
specific_files = view_files
432
398
view_str = views.view_display_str(view_files)
433
note("*** Ignoring files outside view. View is %s" % view_str)
399
note(gettext("*** Ignoring files outside view. View is %s") % view_str)
435
401
# Get extra trees that ought to be searched for file-ids
436
402
extra_trees = None
437
403
if working_tree is not None and working_tree not in (old_tree, new_tree):
438
404
extra_trees = (working_tree,)
439
return old_tree, new_tree, old_branch, new_branch, specific_files, extra_trees
405
return (old_tree, new_tree, old_branch, new_branch,
406
specific_files, extra_trees)
442
409
def _get_tree_to_diff(spec, tree=None, branch=None, basis_is_default=True):