Rev 1856: Move determination of revno to revmeta. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Mon Sep 8 00:17:05 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1856
revision-id: jelmer at samba.org-20080907231658-1doo3ogafeyrr4i1
parent: jelmer at samba.org-20080907223804-zd11jwwxqqevy8in
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2008-09-08 01:16:58 +0200
message:
Move determination of revno to revmeta.
modified:
branch.py svnbranch.py-20051017135706-11c749eb0dab04a7
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
=== modified file 'branch.py'
--- a/branch.py 2008-09-07 22:38:04 +0000
+++ b/branch.py 2008-09-07 23:16:58 +0000
@@ -35,6 +35,7 @@
from bzrlib.plugins.svn.tags import SubversionTags
from bzrlib.plugins.svn.transport import bzr_to_svn_url
+import itertools
import os
class SvnBranch(Branch):
@@ -125,7 +126,7 @@
return self.last_revmeta().revnum
def last_revmeta(self):
- return self._revision_meta_history()[0]
+ return self._revision_meta_history().next()
def check(self):
"""See Branch.Check.
@@ -279,8 +280,12 @@
def last_revision_info(self):
"""See Branch.last_revision_info()."""
- last_revid = self.last_revision()
- return self.revision_id_to_revno(last_revid), last_revid
+ last_revmeta = self.last_revmeta()
+ last_revid = last_revmeta.get_revision_id(self.mapping)
+ last_revno = last_revmeta.get_distance_to_null(self.mapping)
+ if last_revno is None:
+ last_revno = self.revision_id_to_revno(last_revid)
+ return last_revno, last_revid
def revision_id_to_revno(self, revision_id):
"""Given a revision id, return its revno"""
@@ -289,7 +294,7 @@
revmeta_history = self._revision_meta_history()
for revmeta in revmeta_history:
if revmeta.get_revision_id(self.mapping) == revision_id:
- return len(revmeta_history) - revmeta_history.index(revmeta)
+ return revmeta.get_distance_to_null(self.mapping)
raise NoSuchRevision(self, revision_id)
def get_root_id(self, revnum=None):
@@ -312,10 +317,10 @@
if self._revmeta_cache is None:
pb = ui.ui_factory.nested_progress_bar()
try:
- self._revmeta_cache = [revmeta for revmeta in self.repository._revmeta_provider.get_mainline(self.get_branch_path(), self.repository.get_latest_revnum(), self.mapping, pb=pb) if not revmeta.is_hidden(self.mapping)]
+ self._revmeta_cache = self.repository._revmeta_provider.get_mainline(self.get_branch_path(), self.repository.get_latest_revnum(), self.mapping, pb=pb)
finally:
pb.finished()
- return self._revmeta_cache
+ return itertools.ifilter(lambda revmeta: not revmeta.is_hidden(self.mapping), self._revmeta_cache)
def _gen_revision_history(self):
"""Generate the revision history from last revision
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-09-07 22:15:06 +0000
+++ b/revmeta.py 2008-09-07 23:16:58 +0000
@@ -82,12 +82,7 @@
def get_revision_id(self, mapping):
if mapping.roundtripping:
# See if there is a bzr:revision-id revprop set
- try:
- (bzr_revno, revid) = mapping.get_revision_id(self.branch_path, self.get_revprops(), self.get_changed_fileprops())
- except core.SubversionException, (_, num):
- if num == svn_errors.ERR_FS_NO_SUCH_REVISION:
- raise errors.NoSuchRevision(path, revnum)
- raise
+ (bzr_revno, revid) = mapping.get_revision_id(self.branch_path, self.get_revprops(), self.get_changed_fileprops())
else:
revid = None
@@ -186,7 +181,9 @@
return is_bzr_revision_fileprops(self.get_changed_fileprops())
def is_hidden(self, mapping):
- return mapping.is_bzr_revision_hidden(self.get_revprops(), self.get_changed_fileprops())
+ if self.is_bzr_revision():
+ return mapping.is_bzr_revision_hidden(self.get_revprops(), self.get_changed_fileprops())
+ return False
def is_bzr_revision(self):
"""Determine (with as few network requests as possible) if this is a bzr revision.
@@ -233,6 +230,19 @@
return tuple(ret)
+ def get_distance_to_null(self, mapping):
+ if mapping.roundtripping:
+ (bzr_revno, _) = mapping.get_revision_id(self.branch_path, self.get_revprops(),
+ self.get_changed_fileprops())
+ if bzr_revno is not None:
+ return bzr_revno
+ revno = 0
+ revmeta = self
+ while revmeta is not None:
+ revno+=1
+ revmeta = revmeta.get_lhs_parent_revmeta(mapping)
+ return revno
+
def get_rhs_parents(self, mapping):
"""Determine the right hand side parents for this revision.
More information about the bazaar-commits
mailing list