Rev 1867: Pass parent invs when committing rather than just base inv. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Mon Sep 8 20:27:02 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1867
revision-id: jelmer at samba.org-20080908192700-somwjj4s32aanxli
parent: jelmer at samba.org-20080908180658-ohq6b9ax8o8ofyc1
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2008-09-08 21:27:00 +0200
message:
Pass parent invs when committing rather than just base inv.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
=== modified file 'commit.py'
--- a/commit.py 2008-09-08 05:00:58 +0000
+++ b/commit.py 2008-09-08 19:27:00 +0000
@@ -127,9 +127,9 @@
"""Commit Builder implementation wrapped around svn_delta_editor. """
def __init__(self, repository, branch_path, parents, config, timestamp,
- timezone, committer, revprops, revision_id, old_inv=None,
+ timezone, committer, revprops, revision_id, parent_invs=None,
push_metadata=True, graph=None, opt_signature=None,
- append_revisions_only=True):
+ texts=None, append_revisions_only=True):
"""Instantiate a new SvnCommitBuilder.
:param repository: SvnRepository to commit to.
@@ -177,17 +177,20 @@
self._base_revmeta = self.repository._revmeta_provider.get_revision(self.base_path, self.base_revnum)
self._base_branch_props = self._base_revmeta.get_fileprops()
- if old_inv is None:
- if self.base_revid == NULL_REVISION:
- self.old_inv = Inventory(root_id=None)
- else:
- self.old_inv = self.repository.get_inventory(self.base_revid)
- else:
- self.old_inv = old_inv
- # Not all repositories appear to set Inventory.revision_id,
- # so allow None as well.
- assert self.old_inv.revision_id in (None, self.base_revid), \
- "%s != %s" % (self.old_inv.revision_id, self.base_revid)
+ if parent_invs is None:
+ self.parent_invs = self.repository.get_inventories(parents)
+ else:
+ self.parent_invs = parent_invs
+
+ if self.base_revid == NULL_REVISION:
+ self.old_inv = Inventory(root_id=None)
+ else:
+ self.old_inv = self.parent_invs[0]
+
+ # Not all repositories appear to set Inventory.revision_id,
+ # so allow None as well.
+ assert self.old_inv.revision_id in (None, self.base_revid), \
+ "%s != %s" % (self.old_inv.revision_id, self.base_revid)
# Determine revisions merged in this one
merges = filter(lambda x: x != self.base_revid, parents)
@@ -795,15 +798,19 @@
except NoSuchRevision:
opt_signature = None
+ parent_trees = source_repo.revision_trees(rev.parent_ids)
+
builder = SvnCommitBuilder(target_repo, branch_path, base_revids,
config, rev.timestamp,
rev.timezone, rev.committer, rev.properties,
- revision_id, base_tree.inventory,
+ revision_id,
+ [t.inventory for t in parent_trees],
push_metadata=push_metadata,
graph=graph, opt_signature=opt_signature,
+ texts=source_repo.texts,
append_revisions_only=append_revisions_only)
- replay_delta(builder, source_repo.revision_trees(rev.parent_ids), old_tree)
+ replay_delta(builder, parent_trees, old_tree)
try:
revid = builder.commit(rev.message)
except SubversionException, (_, num):
More information about the bazaar-commits
mailing list