Rev 412: pass the pagesize down to History. in http://bazaar.launchpad.net/~jameinel/loggerhead/history_db
John Arbash Meinel
john at arbash-meinel.com
Wed Apr 14 18:49:52 BST 2010
At http://bazaar.launchpad.net/~jameinel/loggerhead/history_db
------------------------------------------------------------
revno: 412
revision-id: john at arbash-meinel.com-20100414174934-h77s6iz1oxb92ix3
parent: john at arbash-meinel.com-20100414174859-ta7b9sta5j3shpyj
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: history_db
timestamp: Wed 2010-04-14 12:49:34 -0500
message:
pass the pagesize down to History.
That way we don't have to walk 5k mainline revisions, when we are only
going to display 20.
-------------- next part --------------
=== modified file 'loggerhead/controllers/changelog_ui.py'
--- a/loggerhead/controllers/changelog_ui.py 2009-06-25 03:35:43 +0000
+++ b/loggerhead/controllers/changelog_ui.py 2010-04-14 17:49:34 +0000
@@ -50,7 +50,8 @@
try:
revid, start_revid, revid_list = history.get_view(
- revid, start_revid, filter_file_id, query)
+ revid, start_revid, filter_file_id, query,
+ max_revs=pagesize)
util.set_context(kwargs)
if (query is not None) and (len(revid_list) == 0):
=== modified file 'loggerhead/history.py'
--- a/loggerhead/history.py 2010-04-14 17:07:57 +0000
+++ b/loggerhead/history.py 2010-04-14 17:49:34 +0000
@@ -348,13 +348,12 @@
# TODO: This operation appears at the top of profiling currently
# when loading the 'changes' page. Especially unfortunate
# given that we only show ~20 revs...
- if start_revid == self.last_revid:
- history = reversed(self._branch.revision_history())
- else:
- history = self._branch.repository.iter_reverse_revision_history(
- start_revid)
- for rev_id in history:
+ history = self._branch.repository.iter_reverse_revision_history(
+ start_revid)
+ for ctr, rev_id in enumerate(history):
yield rev_id
+ if ctr > 100:
+ break
return
revid_set = set(revid_list)
@@ -514,12 +513,18 @@
if file_id is not None:
revlist = list(
self.get_short_revision_history_by_fileid(file_id, revid))
- revlist = list(self.get_revids_from(revlist, revid))
+ revlist = self.get_revids_from(revlist, revid)
else:
- revlist = list(self.get_revids_from(None, revid))
+ revlist = self.get_revids_from(None, revid)
return revlist
- def get_view(self, revid, start_revid, file_id, query=None):
+ def _expand_iterable(self, iterable, count=None):
+ if count is None:
+ return list(iterable)
+ iterator = iter(iterable)
+ return [iterator.next() for i in xrange(count)]
+
+ def get_view(self, revid, start_revid, file_id, query=None, max_revs=None):
"""
use the URL parameters (revid, start_revid, file_id, and query) to
determine the revision list we're viewing (start_revid, file_id, query)
@@ -547,13 +552,15 @@
start_revid = self.last_revid
if query is None:
- revid_list = self.get_file_view(start_revid, file_id)
+ revid_list = self._expand_iterable(
+ self.get_file_view(start_revid, file_id), max_revs)
if revid is None:
revid = start_revid
if revid not in revid_list:
# if the given revid is not in the revlist, use a revlist that
# starts at the given revid.
- revid_list = self.get_file_view(revid, file_id)
+ revid_list = self._expand_iterable(
+ self.get_file_view(revid, file_id), max_revs)
start_revid = revid
return revid, start_revid, revid_list
More information about the bazaar-commits
mailing list