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