/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/diff.py

  • Committer: Robert Collins
  • Date: 2008-04-04 00:43:07 UTC
  • mfrom: (3331 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3333.
  • Revision ID: robertc@robertcollins.net-20080404004307-0whomfhm3yal2rvw
Resolve conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
from bzrlib.symbol_versioning import (
42
42
        deprecated_function,
43
43
        one_zero,
 
44
        one_three
44
45
        )
45
46
from bzrlib.trace import mutter, warning
46
47
 
540
541
        raise errors.PathsDoNotExist(sorted(s))
541
542
 
542
543
 
 
544
@deprecated_function(one_three)
543
545
def get_prop_change(meta_modified):
544
546
    if meta_modified:
545
547
        return " (properties changed)"
546
548
    else:
547
549
        return  ""
548
550
 
 
551
def get_executable_change(old_is_x, new_is_x):
 
552
    descr = { True:"+x", False:"-x", None:"??" }
 
553
    if old_is_x != new_is_x:
 
554
        return ["%s to %s" % (descr[old_is_x], descr[new_is_x],)]
 
555
    else:
 
556
        return []
 
557
 
549
558
 
550
559
class DiffPath(object):
551
560
    """Base type for command object that compare files"""
930
939
    def _show_diff(self, specific_files, extra_trees):
931
940
        # TODO: Generation of pseudo-diffs for added/deleted files could
932
941
        # be usefully made into a much faster special case.
933
 
        iterator = self.new_tree._iter_changes(self.old_tree,
 
942
        iterator = self.new_tree.iter_changes(self.old_tree,
934
943
                                               specific_files=specific_files,
935
944
                                               extra_trees=extra_trees,
936
945
                                               require_versioned=True)
954
963
            old_present = (kind[0] is not None and versioned[0])
955
964
            new_present = (kind[1] is not None and versioned[1])
956
965
            renamed = (parent[0], name[0]) != (parent[1], name[1])
957
 
            prop_str = get_prop_change(executable[0] != executable[1])
 
966
 
 
967
            properties_changed = []
 
968
            properties_changed.extend(get_executable_change(executable[0], executable[1]))
 
969
 
 
970
            if properties_changed:
 
971
                prop_str = " (properties changed: %s)" % (", ".join(properties_changed),)
 
972
            else:
 
973
                prop_str = ""
 
974
 
958
975
            if (old_present, new_present) == (True, False):
959
976
                self.to_file.write("=== removed %s '%s'\n" %
960
977
                                   (kind[0], oldpath_encoded))
967
984
                self.to_file.write("=== renamed %s '%s' => '%s'%s\n" %
968
985
                    (kind[0], oldpath_encoded, newpath_encoded, prop_str))
969
986
            else:
970
 
                # if it was produced by _iter_changes, it must be
 
987
                # if it was produced by iter_changes, it must be
971
988
                # modified *somehow*, either content or execute bit.
972
989
                self.to_file.write("=== modified %s '%s'%s\n" % (kind[0],
973
990
                                   newpath_encoded, prop_str))