Rev 399: handle incremental calls to svn-upgrade nicely. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev
Jelmer Vernooij
jelmer at samba.org
Mon Jan 15 03:15:43 GMT 2007
------------------------------------------------------------
revno: 399
revision-id: jelmer at samba.org-20070115031521-e4ejwccyzei1kntf
parent: jelmer at samba.org-20070115003937-mxyoa82zy1t616pi
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Mon 2007-01-15 04:15:21 +0100
message:
handle incremental calls to svn-upgrade nicely.
modified:
TODO todo-20060729211917-2kpobww0zyvvo0j2-1
tests/test_upgrade.py test_upgrade.py-20070106170128-64zt3eqggg4tng1c-1
upgrade.py upgrade.py-20070106192108-0rakplee2lzah4gs-1
=== modified file 'TODO'
--- a/TODO 2007-01-14 04:11:21 +0000
+++ b/TODO 2007-01-15 03:15:21 +0000
@@ -7,7 +7,7 @@
- when committing specific files in a lightweight checkout, make sure to
commit the right file id changes for "."
- custom implementation of WorkingTree.revert()
-- don't update to the same revnum when opening working tree
+- don't update all entries to the same revnum when opening working tree
- avoid extra connect in logwalker?
- get rid of use of `svn ls' in logwalker
- make ListBranchingScheme() support wildcards
=== modified file 'tests/test_upgrade.py'
--- a/tests/test_upgrade.py 2007-01-09 05:59:35 +0000
+++ b/tests/test_upgrade.py 2007-01-15 03:15:21 +0000
@@ -128,6 +128,41 @@
self.assertTrue([oldrepos.generate_revision_id(1, "")],
newrepos.revision_parents("customrev-svn%d-upgrade" % MAPPING_VERSION))
+ def test_single_custom_continue(self):
+ repos_url = self.make_client("a", "dc")
+ self.build_tree({'dc/a': 'b', 'dc/b': 'c'})
+ self.client_add("dc/a")
+ self.client_add("dc/b")
+ 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")
+ file("f/b", "w").write("c")
+ wt.add("a")
+ wt.add("b")
+ wt.commit(message="data", rev_id="svn-v1:1@%s-" % oldrepos.uuid)
+ file("f/a", 'w').write("moredata")
+ file("f/b", 'w').write("moredata")
+ wt.commit(message='fix moredata', rev_id="customrev")
+
+ tree = newrepos.revision_tree("svn-v1:1@%s-" % oldrepos.uuid)
+
+ vf = newrepos.weave_store.get_weave_or_empty(tree.inventory.path2id("a"), newrepos.get_transaction())
+ vf.clone_text("customrev-svn%d-upgrade" % MAPPING_VERSION,
+ "svn-v1:1@%s-" % oldrepos.uuid, ["svn-v1:1@%s-" % oldrepos.uuid])
+
+ upgrade_repository(newrepos, oldrepos, allow_change=True)
+
+ self.assertTrue(newrepos.has_revision(oldrepos.generate_revision_id(1, "")))
+ self.assertTrue(newrepos.has_revision("customrev-svn%d-upgrade" % MAPPING_VERSION))
+ self.assertTrue([oldrepos.generate_revision_id(1, "")],
+ newrepos.revision_parents("customrev-svn%d-upgrade" % MAPPING_VERSION))
+
def test_more_custom(self):
repos_url = self.make_client("a", "dc")
self.build_tree({'dc/a': 'b'})
=== modified file 'upgrade.py'
--- a/upgrade.py 2007-01-07 00:48:00 +0000
+++ b/upgrade.py 2007-01-15 03:15:21 +0000
@@ -43,6 +43,7 @@
# Change the parent of a revision
def change_revision_parent(repository, oldrevid, newrevid, new_parents):
assert isinstance(new_parents, list)
+ mutter('creating copy %r of %r with new parents %r' % (newrevid, oldrevid, new_parents))
oldrev = repository.get_revision(oldrevid)
builder = repository.get_commit_builder(branch=None, parents=new_parents,
@@ -57,9 +58,12 @@
new_ie = ie.copy()
if new_ie.revision == oldrevid:
new_ie.revision = None
- builder.record_entry_contents(new_ie,
- map(repository.get_revision_inventory, new_parents),
- path, repository.revision_tree(oldrevid))
+ versionedfile = repository.weave_store.get_weave_or_empty(new_ie.file_id,
+ repository.get_transaction())
+ if not versionedfile.has_version(newrevid):
+ builder.record_entry_contents(new_ie,
+ map(repository.get_revision_inventory, new_parents),
+ path, repository.revision_tree(oldrevid))
builder.finish_inventory()
return builder.commit(oldrev.message)
@@ -180,10 +184,11 @@
pb = ui_factory.nested_progress_bar()
i = 0
+ total = len(needs_upgrading)
try:
while len(needs_upgrading) > 0:
revid = needs_upgrading.pop()
- pb.update('upgrading revisions', i, len(needs_upgrading))
+ pb.update('upgrading revisions', i, total)
i+=1
newrevid = create_upgraded_revid(revid)
rename_map[revid] = newrevid
More information about the bazaar-commits
mailing list