Rev 3224: nerge bzr.dev in file:///v/home/vila/src/bzr/experimental/selftest/

Vincent Ladeuil v.ladeuil+lp at free.fr
Sun Mar 23 22:43:24 GMT 2008


At file:///v/home/vila/src/bzr/experimental/selftest/

------------------------------------------------------------
revno: 3224
revision-id: v.ladeuil+lp at free.fr-20080323224319-3bn6nr4uezrb5d89
parent: v.ladeuil+lp at free.fr-20080321190032-6x21616wafgwczmx
parent: pqm at pqm.ubuntu.com-20080323213924-jw60nko0lafszdaa
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest
timestamp: Sun 2008-03-23 23:43:19 +0100
message:
  nerge bzr.dev
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
  bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
  bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
    ------------------------------------------------------------
    revno: 3193.1.108
    revision-id: pqm at pqm.ubuntu.com-20080323213924-jw60nko0lafszdaa
    parent: pqm at pqm.ubuntu.com-20080323200233-gaiwmyujgxauj4ve
    parent: aaron at aaronbentley.com-20080323200617-0jr1hwcg3p2u32ul
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Sun 2008-03-23 21:39:24 +0000
    message:
      Remove deprecated codepaths from log.py (james_w)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
        ------------------------------------------------------------
        revno: 3193.106.2
        revision-id: aaron at aaronbentley.com-20080323200617-0jr1hwcg3p2u32ul
        parent: aaron at aaronbentley.com-20080323200343-56d44clo1544kzjy
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: bzr.ab.integration2
        timestamp: Sun 2008-03-23 16:06:17 -0400
        message:
          Cleanups
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
        ------------------------------------------------------------
        revno: 3193.106.1
        revision-id: aaron at aaronbentley.com-20080323200343-56d44clo1544kzjy
        parent: pqm at pqm.ubuntu.com-20080320180614-grrzhydka050ap3a
        parent: jw+debian at jameswestby.net-20080316122554-tllkss9hg512n8o0
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: bzr.ab.integration2
        timestamp: Sun 2008-03-23 16:03:43 -0400
        message:
          Merge deprecated codepath removal
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
        ------------------------------------------------------------
        revno: 3193.105.1
        revision-id: jw+debian at jameswestby.net-20080316122554-tllkss9hg512n8o0
        parent: pqm at pqm.ubuntu.com-20080313004030-mff9aq1jfg13n0qi
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev
        timestamp: Sun 2008-03-16 12:25:54 +0000
        message:
          Remove deprecated codepaths from log.py.
          
          They have been deprecated since 0.17, so everyone should have moved
          by now.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
    ------------------------------------------------------------
    revno: 3193.1.107
    revision-id: pqm at pqm.ubuntu.com-20080323200233-gaiwmyujgxauj4ve
    parent: pqm at pqm.ubuntu.com-20080320180614-grrzhydka050ap3a
    parent: aaron at aaronbentley.com-20080323182637-udhhz4srjvwjc95p
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Sun 2008-03-23 20:02:33 +0000
    message:
      Diff describes execute-bit changes better (cmiller)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
    ------------------------------------------------------------
    revno: 3193.104.2
    revision-id: aaron at aaronbentley.com-20080323182637-udhhz4srjvwjc95p
    parent: aaron at aaronbentley.com-20080323182425-qnr06aeuwcxr86t9
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: bzr.ab.integration
    timestamp: Sun 2008-03-23 14:26:37 -0400
    message:
      Add NEWS entry
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3193.104.1
    revision-id: aaron at aaronbentley.com-20080323182425-qnr06aeuwcxr86t9
    parent: pqm at pqm.ubuntu.com-20080320180614-grrzhydka050ap3a
    parent: bzrdev at chad.org-20080313232212-gl2nml7k11m6623u
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: bzr.ab.integration
    timestamp: Sun 2008-03-23 14:24:25 -0400
    message:
      Merge explicit property change from Chad Miller
    modified:
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
    ------------------------------------------------------------
    revno: 3193.103.1
    revision-id: bzrdev at chad.org-20080313232212-gl2nml7k11m6623u
    parent: pqm at pqm.ubuntu.com-20080312213603-mtgxmfy3td5n04yh
    committer: C Miller <bzrdev at chad.org>
    branch nick: bzr.dev--explicit-prop-diff
    timestamp: Thu 2008-03-13 19:22:12 -0400
    message:
      Describe the property changes in diffs.  Currently, this is the executable-bit
      only.  
      
      Now, includes tests.
    modified:
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS	2008-03-20 16:24:32 +0000
+++ b/NEWS	2008-03-23 21:39:24 +0000
@@ -31,6 +31,9 @@
     * Merge is faster.  We no longer check a file's existence unnecessarily
       when merging the execute bit.  (Aaron Bentley)
 
+    * Diff is now more specific about execute-bit changes it describes
+      (Chad Miller)
+
   BUGFIXES:
 
     * ``bzr mv a b`` can be now used also to rename previously renamed
@@ -47,6 +50,10 @@
 
   API BREAKS:
 
+    * Log formatters must now provide log_revision instead of
+      show and show_merge_revno methods. The latter had been
+      deprecated since the 0.17 release. (James Westby)
+
   TESTING:
 
   INTERNALS:

=== modified file 'bzrlib/diff.py'
--- a/bzrlib/diff.py	2008-03-07 14:15:10 +0000
+++ b/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/log.py'
--- a/bzrlib/log.py	2008-03-09 22:06:47 +0000
+++ b/bzrlib/log.py	2008-03-23 20:06:17 +0000
@@ -63,7 +63,6 @@
     config,
     lazy_regex,
     registry,
-    symbol_versioning,
     )
 from bzrlib.errors import (
     BzrCommandError,
@@ -79,10 +78,6 @@
 from bzrlib.revisionspec import (
     RevisionInfo,
     )
-from bzrlib.symbol_versioning import (
-    deprecated_method,
-    zero_seventeen,
-    )
 from bzrlib.trace import mutter
 from bzrlib.tsort import (
     merge_sort,
@@ -222,26 +217,7 @@
     if direction == 'reverse':
         start_rev_id, end_rev_id = end_rev_id, start_rev_id
         
-    legacy_lf = getattr(lf, 'log_revision', None) is None
-    if legacy_lf:
-        # pre-0.17 formatters use show for mainline revisions.
-        # how should we show merged revisions ?
-        #   pre-0.11 api: show_merge
-        #   0.11-0.16 api: show_merge_revno
-        show_merge_revno = getattr(lf, 'show_merge_revno', None)
-        show_merge = getattr(lf, 'show_merge', None)
-        if show_merge is None and show_merge_revno is None:
-            # no merged-revno support
-            generate_merge_revisions = False
-        else:
-            generate_merge_revisions = True
-        # tell developers to update their code
-        symbol_versioning.warn('LogFormatters should provide log_revision '
-            'instead of show and show_merge_revno since bzr 0.17.',
-            DeprecationWarning, stacklevel=3)
-    else:
-        generate_merge_revisions = getattr(lf, 'supports_merge_revisions', 
-                                           False)
+    generate_merge_revisions = getattr(lf, 'supports_merge_revisions', False)
     generate_single_revision = False
     if ((not generate_merge_revisions)
         and ((start_rev_id and (start_rev_id not in rev_nos))
@@ -306,26 +282,9 @@
             if not searchRE.search(rev.message):
                 continue
 
-        if not legacy_lf:
-            lr = LogRevision(rev, revno, merge_depth, delta,
-                             rev_tag_dict.get(rev_id))
-            lf.log_revision(lr)
-        else:
-            # support for legacy (pre-0.17) LogFormatters
-            if merge_depth == 0:
-                if generate_tags:
-                    lf.show(revno, rev, delta, rev_tag_dict.get(rev_id))
-                else:
-                    lf.show(revno, rev, delta)
-            else:
-                if show_merge_revno is None:
-                    lf.show_merge(rev, merge_depth)
-                else:
-                    if generate_tags:
-                        lf.show_merge_revno(rev, merge_depth, revno,
-                                            rev_tag_dict.get(rev_id))
-                    else:
-                        lf.show_merge_revno(rev, merge_depth, revno)
+        lr = LogRevision(rev, revno, merge_depth, delta,
+                         rev_tag_dict.get(rev_id))
+        lf.log_revision(lr)
         if limit:
             log_count += 1
             if log_count >= limit:
@@ -616,10 +575,6 @@
 #        """
 #        raise NotImplementedError('not implemented in abstract base')
 
-    @deprecated_method(zero_seventeen)
-    def show(self, revno, rev, delta):
-        raise NotImplementedError('not implemented in abstract base')
-
     def short_committer(self, rev):
         name, address = config.parse_username(rev.committer)
         if name:
@@ -639,17 +594,6 @@
     supports_delta = True
     supports_tags = True
 
-    @deprecated_method(zero_seventeen)
-    def show(self, revno, rev, delta, tags=None):
-        lr = LogRevision(rev, revno, 0, delta, tags)
-        return self.log_revision(lr)
-
-    @deprecated_method(zero_seventeen)
-    def show_merge_revno(self, rev, merge_depth, revno, tags=None):
-        """Show a merged revision rev, with merge_depth and a revno."""
-        lr = LogRevision(rev, revno, merge_depth, tags=tags)
-        return self.log_revision(lr)
-
     def log_revision(self, revision):
         """Log a revision, either merged or not."""
         indent = '    ' * revision.merge_depth
@@ -695,11 +639,6 @@
     supports_delta = True
     supports_single_merge_revision = True
 
-    @deprecated_method(zero_seventeen)
-    def show(self, revno, rev, delta):
-        lr = LogRevision(rev, revno, 0, delta)
-        return self.log_revision(lr)
-
     def log_revision(self, revision):
         to_file = self.to_file
         date_str = format_date(revision.rev.timestamp,
@@ -755,11 +694,6 @@
         else:
             return rev.message
 
-    @deprecated_method(zero_seventeen)
-    def show(self, revno, rev, delta):
-        self.to_file.write(self.log_string(revno, rev, terminal_width()-1))
-        self.to_file.write('\n')
-
     def log_revision(self, revision):
         self.to_file.write(self.log_string(revision.revno, revision.rev,
                                               self._max_chars))

=== modified file 'bzrlib/tests/test_diff.py'
--- a/bzrlib/tests/test_diff.py	2008-01-29 15:58:23 +0000
+++ b/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.



More information about the bazaar-commits mailing list