Rev 2097: remember some expensive data in RevisionMetadata. in http://people.samba.org/bzr/jelmer/bzr-svn/0.5
Jelmer Vernooij
jelmer at samba.org
Sat Nov 29 03:59:07 GMT 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/0.5
------------------------------------------------------------
revno: 2097
revision-id: jelmer at samba.org-20081129035903-glfk6ram2xs4p43p
parent: jelmer at samba.org-20081129025815-ijfbt7gff7p8631s
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.5
timestamp: Sat 2008-11-29 04:59:03 +0100
message:
remember some expensive data in RevisionMetadata.
modified:
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-11-29 02:58:15 +0000
+++ b/revmeta.py 2008-11-29 03:59:03 +0000
@@ -95,6 +95,8 @@
self._revprops = revprops
self._changed_fileprops = changed_fileprops
self._fileprops = fileprops
+ self._is_bzr_revision = None
+ self._direct_lhs_parent_known = False
self.metabranch = metabranch
self.uuid = uuid
@@ -105,7 +107,7 @@
self.uuid == other.uuid)
def __repr__(self):
- return "<RevisionMetadata for revision %d, path %s in repository %s>" % (self.revnum, self.branch_path, repr(self.uuid))
+ return "<RevisionMetadata for revision %d, path %s in repository %r>" % (self.revnum, self.branch_path, self.uuid)
def changes_branch_root(self):
"""Check whether the branch root was modified in this revision.
@@ -215,17 +217,23 @@
return self._changed_fileprops
def get_direct_lhs_parent_revmeta(self):
+ if self._direct_lhs_parent_known:
+ return self._direct_lhs_parent_revmeta
+ self._direct_lhs_parent_known = True
if self.metabranch is not None:
# Perhaps the metabranch already has the parent?
try:
- return self.metabranch.get_lhs_parent(self)
+ self._direct_lhs_parent_revmeta = self.metabranch.get_lhs_parent(self)
+ return self._direct_lhs_parent_revmeta
except StopIteration:
- return None
+ self._direct_lhs_parent_revmeta = None
+ return self._direct_lhs_parent_revmeta
except MetabranchHistoryIncomplete:
pass
# FIXME: Don't use self.repository.branch_prev_location,
# since it browses history
- return self.repository._revmeta_provider.branch_prev_location(self)
+ self._direct_lhs_parent_revmeta = self.repository._revmeta_provider.branch_prev_location(self)
+ return self._direct_lhs_parent_revmeta
def get_lhs_parent_revmeta(self, mapping):
"""Get the revmeta object for the left hand side parent.
@@ -316,6 +324,8 @@
"""Determine (with as few network requests as possible) if this is a bzr revision.
"""
+ if self._is_bzr_revision is not None:
+ return self._is_bzr_revision
order = []
# If the server already sent us all revprops, look at those first
if self._log.quick_revprops:
@@ -328,6 +338,7 @@
for fn in order:
ret = fn()
if ret is not None:
+ self._is_bzr_revision = ret
return ret
return None
More information about the bazaar-commits
mailing list