Rev 379: Simple upgrades work now. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev

Jelmer Vernooij jelmer at samba.org
Sat Jan 6 21:51:40 GMT 2007


------------------------------------------------------------
revno: 379
revision-id: jelmer at samba.org-20070106215112-2x0vx6ham30ej6bh
parent: jelmer at samba.org-20070106212433-roc7i97z1uuna32a
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Sat 2007-01-06 22:51:12 +0100
message:
  Simple upgrades work now.
modified:
  tests/test_upgrade.py          test_upgrade.py-20070106170128-64zt3eqggg4tng1c-1
  upgrade.py                     upgrade.py-20070106192108-0rakplee2lzah4gs-1
=== modified file 'tests/test_upgrade.py'
--- a/tests/test_upgrade.py	2007-01-06 20:53:19 +0000
+++ b/tests/test_upgrade.py	2007-01-06 21:51:12 +0000
@@ -16,9 +16,11 @@
 
 from bzrlib.bzrdir import BzrDir
 from bzrlib.errors import NoRepositoryPresent, InvalidRevisionId
+from bzrlib.repository import Repository
 from bzrlib.tests import TestCase, TestCaseWithTransport
 
-from repository import SvnRepository, MAPPING_VERSION
+import repository
+from repository import SvnRepository, MAPPING_VERSION, REVISION_ID_PREFIX
 from tests import TestCaseWithSubversionRepository
 from upgrade import (change_revision_parent, upgrade_repository, 
                      UpgradeChangesContent, parse_legacy_revision_id,
@@ -77,5 +79,50 @@
         self.assertEqual(["bloe"], wt.branch.repository.revision_parents(newrev))
 
 
-class UpgradeTests(TestCase):
-    pass
+class UpgradeTests(TestCaseWithSubversionRepository):
+    def test_no_custom(self):
+        repos_url = self.make_client("a", "dc")
+        self.build_tree({'dc/a': 'b'})
+        self.client_add("dc/a")
+        self.client_commit("dc", "data")
+
+        oldrepos = Repository.open(repos_url)
+        dir = BzrDir.create("f")
+        newrepos = dir.create_repository()
+        oldrepos.copy_content_into(newrepos)
+        dir.create_branch()
+        wt = dir.create_workingtree()
+        file("f/a","w").write("b")
+        wt.add("a")
+        wt.commit(message="data", rev_id="svn-v1:1@%s-" % oldrepos.uuid)
+
+        self.assertTrue(newrepos.has_revision("svn-v1:1@%s-" % oldrepos.uuid))
+
+        upgrade_repository(newrepos, oldrepos)
+
+        self.assertTrue(newrepos.has_revision("svn-v%d:1@%s-" % (MAPPING_VERSION, oldrepos.uuid)))
+
+    def test_single_custom(self):
+        repos_url = self.make_client("a", "dc")
+        self.build_tree({'dc/a': 'b'})
+        self.client_add("dc/a")
+        self.client_commit("dc", "data")
+
+        oldrepos = Repository.open(repos_url)
+        dir = BzrDir.create("f")
+        newrepos = dir.create_repository()
+        oldrepos.copy_content_into(newrepos)
+        dir.create_branch()
+        wt = dir.create_workingtree()
+        file("f/a", "w").write("b")
+        wt.add("a")
+        wt.commit(message="data", rev_id="svn-v1:1@%s-" % oldrepos.uuid)
+        file("dc/a", 'w').write("moredata")
+        wt.commit(message='fix moredata', rev_id="customrev")
+
+        upgrade_repository(newrepos, oldrepos)
+
+        self.assertTrue(newrepos.has_revision("svn-v%d:1@%s-" % (MAPPING_VERSION, oldrepos.uuid)))
+        self.assertTrue(newrepos.has_revision("customrev-svn%d-upgrade" % MAPPING_VERSION))
+        self.assertTrue(["svn-v%d:1@%s-" % (MAPPING_VERSION, oldrepos.uuid)],
+                        newrepos.revision_parents("customrev-svn%d-upgrade" % MAPPING_VERSION))

=== modified file 'upgrade.py'
--- a/upgrade.py	2007-01-06 20:53:19 +0000
+++ b/upgrade.py	2007-01-06 21:51:12 +0000
@@ -92,7 +92,7 @@
                        allow_change=False):
 
     needed_revs = []
-    needs_upgrading = set()
+    needs_upgrading = []
     new_parents = {}
     rename_map = {}
 
@@ -100,6 +100,12 @@
     # dictionary with revision ids in key, new parents in value
     graph = repository.get_revision_graph()
     for revid in graph:
+        try:
+            uuid = parse_legacy_revision_id(revid)[0]
+            if uuid == svn_repository.uuid:
+                continue
+        except InvalidRevisionId:
+            pass
         new_parents[revid] = []
         for parent in graph[revid]:
             try:
@@ -123,11 +129,13 @@
 
     pb = ui_factory.nested_progress_bar()
     i = 0
-    for revid in needs_upgrading:
-        pb.update('upgrading revisions', i, len(needed_revs))
+    while len(needs_upgrading) > 0:
+        revid = needs_upgrading.pop()
+        pb.update('upgrading revisions', i, len(needs_upgrading))
+        i+=1
         newrevid = create_upgraded_revid(revid)
-        change_revision_parent(repository, revid, newrevid, 
-                                          new_parents[revid])
+        if repository.has_revision(newrevid):
+            continue
+        change_revision_parent(repository, revid, newrevid, new_parents[revid])
         # FIXME: also upgrade children of newrevid
-        i+=1
     pb.finished()




More information about the bazaar-commits mailing list