Rev 5: make it possible to use the revision cache. in file:///data/jelmer/bzr-global-log/trunk/
Jelmer Vernooij
jelmer at samba.org
Tue Nov 20 18:22:46 GMT 2007
At file:///data/jelmer/bzr-global-log/trunk/
------------------------------------------------------------
revno: 5
revision-id:jelmer at samba.org-20071105025326-lsj3pct1eepgmqng
parent: jelmer at samba.org-20071105024001-zjcixn8u3y3ify36
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2007-11-05 03:53:26 +0100
message:
make it possible to use the revision cache.
modified:
__init__.py __init__.py-20071029004222-avdgq0mc7n1q6q8f-1
cache.py db.py-20071105012118-v51dlgcjf12dagnc-1
log.py log.py-20071105015514-0bmng0zxrpw9xbfw-1
stack.py stack.py-20071105021820-d024bz62abe2t3fv-1
=== modified file '__init__.py'
--- a/__init__.py 2007-11-05 02:40:01 +0000
+++ b/__init__.py 2007-11-05 02:53:26 +0000
@@ -17,7 +17,7 @@
from bzrlib import ui
from bzrlib.branch import Branch
from bzrlib.commands import Command, register_command
-from bzrlib.option import ListOption
+from bzrlib.option import ListOption, Option
from bzrlib.log import (log_formatter, log_formatter_registry, show_log,
LineLogFormatter, LogRevision)
@@ -28,18 +28,23 @@
takes_options = [
'log-format',
ListOption('author', type=unicode,
- help="Specified author only")
+ help="Specified author only"),
+ Option('cache', help="Use cache")
]
takes_args = ["location*"]
- def run(self, location_list, log_format=None, author=None):
+ def run(self, location_list, log_format=None, author=None, cache=False):
+ from bzrlib.plugins.global_log.cache import RevisionCachingRepository
from bzrlib.plugins.global_log.log import cmp_log_by_time
from bzrlib.plugins.global_log.stack import SimpleStackingRepository
pb = ui.ui_factory.nested_progress_bar()
if location_list is None:
location_list = ["."]
- repository = SimpleStackingRepository()
+ if cache:
+ repository = RevisionCachingRepository()
+ else:
+ repository = SimpleStackingRepository()
try:
revids = set()
=== modified file 'cache.py'
--- a/cache.py 2007-11-05 02:40:01 +0000
+++ b/cache.py 2007-11-05 02:53:26 +0000
@@ -15,6 +15,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import bzrlib
+from bzrlib.errors import NoSuchRevision
from bzrlib.repository import Repository
from bzrlib.trace import warning
@@ -60,13 +61,13 @@
raise NotImplementedError(self.get_parents)
def add_revision_location(self, revid, repository_location):
- raise NotImplementedError(self.add_revision_location)
+ pass
def add_revision(self, rev):
- raise NotImplementedError(self.add_revision)
+ pass
- def get_revision(self, rev):
- raise NotImplementedError(self.get_revision)
+ def get_revision(self, revid):
+ raise NoSuchRevision(revid, self)
def get_log_revision(self, rev):
raise NotImplementedError(self.get_log_revision)
@@ -74,3 +75,17 @@
class RevisionCachingRepository(SimpleStackingRepository):
"""Repository implementation that uses a revision cache if possible."""
+
+ def __init__(self):
+ super(RevisionCachingRepository, self).__init__()
+ self.cache = RevisionCache()
+
+ def _get_revisions(self, revids):
+ for revid in revids:
+ try:
+ rev = self.cache.get_revision(revid)
+ except NoSuchRevision:
+ rev, repo = self._get_stacked_revision(revid)
+ self.cache.add_revision(rev)
+ self.cache.add_revision_location(rev.revision_id, repo.base)
+ yield rev
=== modified file 'log.py'
--- a/log.py 2007-11-05 02:40:01 +0000
+++ b/log.py 2007-11-05 02:53:26 +0000
@@ -19,4 +19,3 @@
def cmp_log_by_time(x, y):
return cmp(y.rev.timestamp, x.rev.timestamp)
-
=== modified file 'stack.py'
--- a/stack.py 2007-11-05 02:40:01 +0000
+++ b/stack.py 2007-11-05 02:53:26 +0000
@@ -24,16 +24,18 @@
def add_repository(self, repos):
self._subrepositories.add(repos)
-
+
+ def _get_stacked_revision(self, revid):
+ for repos in self._subrepositories:
+ try:
+ return repos.get_revision(revid), repos
+ except NoSuchRevision:
+ continue
+ raise NoSuchRevision(revid)
+
def _get_revisions(self, revids):
for revid in revids:
- for repos in self._subrepositories:
- try:
- rev = repos.get_revision(revid)
- except NoSuchRevision:
- continue
- yield rev
- break
+ yield self._get_stacked_revision(revid)[0]
def lock_read(self):
pass
More information about the bazaar-commits
mailing list