Rev 2270: Fix sticky branches in iter_all_changes(). in http://people.samba.org/bzr/jelmer/bzr-svn/0.5

Jelmer Vernooij jelmer at samba.org
Tue Dec 16 04:01:51 GMT 2008


At http://people.samba.org/bzr/jelmer/bzr-svn/0.5

------------------------------------------------------------
revno: 2270
revision-id: jelmer at samba.org-20081216040147-qp5egjmxk5h6rzzm
parent: jelmer at samba.org-20081216015744-ke3oy2gzhpjovp16
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.5
timestamp: Tue 2008-12-16 05:01:47 +0100
message:
  Fix sticky branches in iter_all_changes().
modified:
  NEWS                           news-20061231030336-h9fhq245ie0de8bs-1
  revmeta.py                     revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
  tests/test_changes.py          test_changes.py-20080529111734-f7fbshmnlgnvue45-1
=== modified file 'NEWS'
--- a/NEWS	2008-12-14 02:51:46 +0000
+++ b/NEWS	2008-12-16 04:01:47 +0000
@@ -23,6 +23,9 @@
    * Fix pointless commits when using roundtripping using revision 
      properties. (#299943)
 
+   * Make sure branches are properly removed in iter_all_changes(). 
+     (#306288, #300006)
+
 bzr-svn 0.5.0~rc1			2008-12-08
 
   CHANGES

=== modified file 'revmeta.py'
--- a/revmeta.py	2008-12-16 01:57:44 +0000
+++ b/revmeta.py	2008-12-16 04:01:47 +0000
@@ -1022,11 +1022,17 @@
                     # didn't exist previously
                     if new_name in self._metabranches:
                         if self._metabranches[new_name]._revs:
-                            self._metabranches[new_name]._revs[-1]._set_direct_lhs_parent_revmeta(None)
+                            rev = self._metabranches[new_name]._revs[-1]
+                            assert rev.branch_path == new_name
+                            rev._set_direct_lhs_parent_revmeta(None)
                         del self._metabranches[new_name]
+                        if new_name in metabranches_history[revnum]:
+                            del metabranches_history[revnum][new_name]
                 else:
                     data = self._metabranches[new_name]
                     del self._metabranches[new_name]
+                    if new_name in metabranches_history[revnum]:
+                        del metabranches_history[revnum][new_name]
                     metabranches_history[old_rev][old_name].add(data)
                     if not self.layout.is_branch_or_tag(old_name, project):
                         unusual_history[old_rev].add(old_name)
@@ -1039,6 +1045,7 @@
                 yield "revision", revmeta
             self._last_revnum = revnum
             remembered = metabranches_history[revnum]
+            del metabranches_history[revnum]
 
 
 def filter_revisions(it):

=== modified file 'tests/test_changes.py'
--- a/tests/test_changes.py	2008-08-29 20:03:11 +0000
+++ b/tests/test_changes.py	2008-12-16 04:01:47 +0000
@@ -14,7 +14,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from bzrlib.tests import TestCase
-from bzrlib.plugins.svn.changes import path_is_child, find_prev_location, changes_root
+from bzrlib.plugins.svn.changes import path_is_child, find_prev_location, changes_root, apply_reverse_changes
 
 class PathIsChildTests(TestCase):
     def test_both_empty(self):
@@ -74,3 +74,10 @@
 
     def test_multiple_roots(self):
         self.assertEquals(None, changes_root(["bla", "blie"]))
+
+
+class ApplyReverseChangesTests(TestCase):
+
+    def test_parent_rename(self):
+        self.assertEquals([('tags/2.5-M2', 'geotools/tags/2.5-M2', 5617)],
+            list(apply_reverse_changes(['trunk/geotools2', 'tags/2.5-M2', 'trunk'], {'tags': (u'A', 'geotools/tags', 5617), 'geotools/tags': (u'D', None, -1)})))




More information about the bazaar-commits mailing list