Rev 1813: Create revmeta object in commit. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Fri Sep 5 22:14:25 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1813
revision-id: jelmer at samba.org-20080905211420-gjbkm40v1c14c454
parent: jelmer at samba.org-20080905202424-sly3zcrjqau7srak
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Fri 2008-09-05 23:14:20 +0200
message:
Create revmeta object in commit.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
=== modified file 'commit.py'
--- a/commit.py 2008-09-04 11:47:09 +0000
+++ b/commit.py 2008-09-05 21:14:20 +0000
@@ -452,10 +452,8 @@
ret += _dir_process_file_id(old_inv, new_inv, new_child_path, child_ie.file_id)
return ret
-
fileids = {}
text_parents = {}
-
changes = []
if (self.old_inv.root is None or
@@ -488,6 +486,8 @@
repository_latest_revnum = self.repository.get_latest_revnum()
lock = self.repository.transport.lock_write(".")
+ self._changed_fileprops = {}
+
if self.push_metadata:
(fileids, text_parents) = self._determine_texts_identity()
@@ -541,6 +541,7 @@
for prop, value in self._svnprops.items():
if value == self._base_branch_props.get(prop):
continue
+ self._changed_fileprops[prop] = value
if not properties.is_valid_property_name(prop):
warning("Setting property %r with invalid characters in name", prop)
assert isinstance(value, str)
@@ -562,16 +563,15 @@
assert self.revision_metadata is not None
(result_revision, result_date, result_author) = self.revision_metadata
+
+ self._svn_revprops[properties.PROP_REVISION_AUTHOR] = result_author
+ self._svn_revprops[properties.PROP_REVISION_DATE] = result_date
self.repository._clear_cached_state(result_revision)
- revid = self.branch.generate_revision_id(result_revision)
-
- assert not self.push_metadata or self._new_revision_id is None or self._new_revision_id == revid
-
- self.mutter('commit %d finished. author: %r, date: %r, revid: %r',
+ self.mutter('commit %d finished. author: %r, date: %r',
result_revision, result_author,
- result_date, revid)
+ result_date)
override_svn_revprops = self._config.get_override_svn_revprops()
if override_svn_revprops is not None:
@@ -581,7 +581,19 @@
if properties.PROP_REVISION_DATE in override_svn_revprops:
new_revprops[properties.PROP_REVISION_DATE] = properties.time_to_cstring(1000000*self._timestamp)
set_svn_revprops(self.repository.transport, result_revision, new_revprops)
-
+ self._svn_revprops.update(new_revprops)
+
+ self.revmeta = self.repository._revmeta_provider.get_revision(self.branch.get_branch_path(), result_revision,
+ None, # FIXME: Generate changes dictionary
+ revprops=self._svn_revprops,
+ changed_fileprops=self._changed_fileprops,
+ fileprops=self._svnprops,
+ metabranch=None # FIXME: Determine from base_revmeta ?
+ )
+
+ revid = self.revmeta.get_revision_id(self.base_mapping)
+
+ assert not self.push_metadata or self._new_revision_id is None or self._new_revision_id == revid
return revid
def record_entry_contents(self, ie, parent_invs, path, tree,
@@ -773,7 +785,6 @@
raise
except ChangesRootLHSHistory:
raise BzrError("Unable to push revision %r because it would change the ordering of existing revisions on the Subversion repository root. Use rebase and try again or push to a non-root path" % revision_id)
-
return revid
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-09-05 20:24:24 +0000
+++ b/revmeta.py 2008-09-05 21:14:20 +0000
@@ -39,8 +39,10 @@
class RevisionMetadata(object):
"""Object describing a revision with bzr semantics in a Subversion repository."""
- def __init__(self, repository, check_revprops, get_fileprops_fn, logwalker, uuid,
- branch_path, revnum, paths, revprops, changed_fileprops=None, metabranch=None):
+ def __init__(self, repository, check_revprops, get_fileprops_fn, logwalker,
+ uuid, branch_path, revnum, paths, revprops,
+ changed_fileprops=None, fileprops=None,
+ metabranch=None):
self.repository = repository
self.check_revprops = check_revprops
self._get_fileprops_fn = get_fileprops_fn
@@ -50,6 +52,7 @@
self.revnum = revnum
self._revprops = revprops
self._changed_fileprops = changed_fileprops
+ self._fileprops = fileprops
self.metabranch = metabranch
self.uuid = uuid
@@ -86,7 +89,9 @@
return revid
def get_fileprops(self):
- return self._get_fileprops_fn(self.branch_path, self.revnum)
+ if self._fileprops is None:
+ self._fileprops = self._get_fileprops_fn(self.branch_path, self.revnum)
+ return self._fileprops
def get_revprops(self):
if self._revprops is None:
@@ -352,18 +357,20 @@
self._revmeta_cls = RevisionMetadata
def get_revision(self, path, revnum, changes=None, revprops=None, changed_fileprops=None,
- metabranch=None):
+ fileprops=None, metabranch=None):
if (path, revnum) in self._revmeta_cache:
cached = self._revmeta_cache[path,revnum]
if changes is not None:
cached.paths = changes
if cached._changed_fileprops is None:
cached._changed_fileprops = changed_fileprops
+ if cached._fileprops is None:
+ cached._fileprops = fileprops
return self._revmeta_cache[path,revnum]
ret = self._revmeta_cls(self.repository, self.check_revprops, self._get_fileprops_fn,
self._log, self.repository.uuid, path, revnum, changes, revprops,
- changed_fileprops=changed_fileprops,
+ changed_fileprops=changed_fileprops, fileprops=fileprops,
metabranch=metabranch)
self._revmeta_cache[path,revnum] = ret
return ret
More information about the bazaar-commits
mailing list