~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/diff.py

(jelmer) Fix bug #1010339,
 use encoding_type='exact' for bzr testament (John A Meinel)

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
16
16
 
17
 
from __future__ import absolute_import
18
 
 
19
17
import difflib
20
18
import os
21
19
import re
29
27
import tempfile
30
28
 
31
29
from bzrlib import (
 
30
    bzrdir,
 
31
    cmdline,
32
32
    cleanup,
33
 
    cmdline,
34
 
    controldir,
35
33
    errors,
36
34
    osutils,
37
35
    patiencediff,
41
39
    )
42
40
 
43
41
from bzrlib.workingtree import WorkingTree
44
 
from bzrlib.i18n import gettext
45
42
""")
46
43
 
47
44
from bzrlib.registry import (
48
45
    Registry,
49
46
    )
 
47
from bzrlib.symbol_versioning import (
 
48
    deprecated_function,
 
49
    deprecated_in,
 
50
    )
50
51
from bzrlib.trace import mutter, note, warning
51
52
 
52
53
 
287
288
                        new_abspath, e)
288
289
 
289
290
 
 
291
@deprecated_function(deprecated_in((2, 2, 0)))
 
292
def get_trees_and_branches_to_diff(path_list, revision_specs, old_url, new_url,
 
293
                                   apply_view=True):
 
294
    """Get the trees and specific files to diff given a list of paths.
 
295
 
 
296
    This method works out the trees to be diff'ed and the files of
 
297
    interest within those trees.
 
298
 
 
299
    :param path_list:
 
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.
 
304
    :param old_url:
 
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.
 
307
    :param new_url:
 
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.
 
310
    :param apply_view:
 
311
        if True and a view is set, apply the view or check that the paths
 
312
        are within it
 
313
    :returns:
 
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
 
317
        are not locked.
 
318
    """
 
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)
 
322
    
 
323
 
290
324
def get_trees_and_branches_to_diff_locked(
291
325
    path_list, revision_specs, old_url, new_url, add_cleanup, apply_view=True):
292
326
    """Get the trees and specific files to diff given a list of paths.
358
392
    if old_url is None:
359
393
        old_url = default_location
360
394
    working_tree, branch, relpath = \
361
 
        controldir.ControlDir.open_containing_tree_or_branch(old_url)
 
395
        bzrdir.BzrDir.open_containing_tree_or_branch(old_url)
362
396
    lock_tree_or_branch(working_tree, branch)
363
397
    if consider_relpath and relpath != '':
364
398
        if working_tree is not None and apply_view:
372
406
        new_url = default_location
373
407
    if new_url != old_url:
374
408
        working_tree, branch, relpath = \
375
 
            controldir.ControlDir.open_containing_tree_or_branch(new_url)
 
409
            bzrdir.BzrDir.open_containing_tree_or_branch(new_url)
376
410
        lock_tree_or_branch(working_tree, branch)
377
411
        if consider_relpath and relpath != '':
378
412
            if working_tree is not None and apply_view:
396
430
            if view_files:
397
431
                specific_files = view_files
398
432
                view_str = views.view_display_str(view_files)
399
 
                note(gettext("*** Ignoring files outside view. View is %s") % view_str)
 
433
                note("*** Ignoring files outside view. View is %s" % view_str)
400
434
 
401
435
    # Get extra trees that ought to be searched for file-ids
402
436
    extra_trees = None
403
437
    if working_tree is not None and working_tree not in (old_tree, new_tree):
404
438
        extra_trees = (working_tree,)
405
 
    return (old_tree, new_tree, old_branch, new_branch,
406
 
            specific_files, extra_trees)
 
439
    return old_tree, new_tree, old_branch, new_branch, specific_files, extra_trees
407
440
 
408
441
 
409
442
def _get_tree_to_diff(spec, tree=None, branch=None, basis_is_default=True):