[MERGE] make "diff" detail property changes

Chad MILLER gm-gd at chad.org
Thu Mar 13 23:30:19 GMT 2008


# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: bzrdev at chad.org-20080313232212-gl2nml7k11m6623u
# target_branch: file:///home/cmiller/bzr/bzr.dev--pristine/
# testament_sha1: 391792e8343e282fcaff1379265c497815b406ba
# timestamp: 2008-03-13 19:28:30 -0400
# base_revision_id: pqm at pqm.ubuntu.com-20080312213603-mtgxmfy3td5n04yh
#
# Begin patch
=== modified file 'bzrlib/diff.py'
--- bzrlib/diff.py      2008-03-07 14:15:10 +0000
+++ bzrlib/diff.py      2008-03-13 23:22:12 +0000
@@ -41,6 +41,7 @@
 from bzrlib.symbol_versioning import (
         deprecated_function,
         one_zero,
+        one_three
         )
 from bzrlib.trace import mutter, warning

@@ -540,12 +541,20 @@
         raise errors.PathsDoNotExist(sorted(s))


+ at deprecated_function(one_three)
 def get_prop_change(meta_modified):
     if meta_modified:
         return " (properties changed)"
     else:
         return  ""

+def get_executable_change(old_is_x, new_is_x):
+    descr = { True:"+x", False:"-x", None:"??" }
+    if old_is_x != new_is_x:
+        return ["%s to %s" % (descr[old_is_x], descr[new_is_x],)]
+    else:
+        return []
+

 class DiffPath(object):
     """Base type for command object that compare files"""
@@ -954,7 +963,15 @@
             old_present = (kind[0] is not None and versioned[0])
             new_present = (kind[1] is not None and versioned[1])
             renamed = (parent[0], name[0]) != (parent[1], name[1])
-            prop_str = get_prop_change(executable[0] != executable[1])
+
+            properties_changed = []
+            properties_changed.extend(get_executable_change(executable[0],
executable[1]))
+
+            if properties_changed:
+                prop_str = " (properties changed: %s)" % (",
".join(properties_changed),)
+            else:
+                prop_str = ""
+
             if (old_present, new_present) == (True, False):
                 self.to_file.write("=== removed %s '%s'\n" %
                                    (kind[0], oldpath_encoded))

=== modified file 'bzrlib/tests/test_diff.py'
--- bzrlib/tests/test_diff.py   2008-01-29 15:58:23 +0000
+++ bzrlib/tests/test_diff.py   2008-03-13 23:22:12 +0000
@@ -34,6 +34,7 @@
     )
 from bzrlib.errors import BinaryFile, NoDiff, ExecutableMissing
 import bzrlib.osutils as osutils
+import bzrlib.transform as transform
 import bzrlib.patiencediff
 import bzrlib._patiencediff_py
 from bzrlib.tests import (Feature, TestCase, TestCaseWithTransport,
@@ -509,6 +510,39 @@
         self.assertContainsRe(diff, '-contents\n'
                                     '\\+new contents\n')

+
+    def test_internal_diff_exec_property(self):
+        tree = self.make_branch_and_tree('tree')
+
+        tt = transform.TreeTransform(tree)
+        tt.new_file('a', tt.root, 'contents\n', 'a-id', True)
+        tt.new_file('b', tt.root, 'contents\n', 'b-id', False)
+        tt.new_file('c', tt.root, 'contents\n', 'c-id', True)
+        tt.new_file('d', tt.root, 'contents\n', 'd-id', False)
+        tt.new_file('e', tt.root, 'contents\n', 'control-e-id', True)
+        tt.new_file('f', tt.root, 'contents\n', 'control-f-id', False)
+        tt.apply()
+        tree.commit('one', rev_id='rev-1')
+
+        tt = transform.TreeTransform(tree)
+        tt.set_executability(False, tt.trans_id_file_id('a-id'))
+        tt.set_executability(True, tt.trans_id_file_id('b-id'))
+        tt.set_executability(False, tt.trans_id_file_id('c-id'))
+        tt.set_executability(True, tt.trans_id_file_id('d-id'))
+        tt.apply()
+        tree.rename_one('c', 'new-c')
+        tree.rename_one('d', 'new-d')
+
+        diff = self.get_diff(tree.basis_tree(), tree)
+
+        self.assertContainsRe(diff, r"file 'a'.*\(properties
changed:.*\+x to -x.*\)")
+        self.assertContainsRe(diff, r"file 'b'.*\(properties
changed:.*-x to \+x.*\)")
+        self.assertContainsRe(diff, r"file 'c'.*\(properties
changed:.*\+x to -x.*\)")
+        self.assertContainsRe(diff, r"file 'd'.*\(properties
changed:.*-x to \+x.*\)")
+        self.assertNotContainsRe(diff, r"file 'e'")
+        self.assertNotContainsRe(diff, r"file 'f'")
+
+
     def test_binary_unicode_filenames(self):
         """Test that contents of files are *not* encoded in UTF-8 when there
         is a binary file in the diff.

# Begin bundle
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
yRThQkIaniJo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff-prop.bundle
Type: application/octet-stream
Size: 6783 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20080313/b6a74f07/attachment-0001.obj 


More information about the bazaar mailing list