You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2012/10/16 20:10:42 UTC
git commit: [#5094] Fixed issue with paging not being applied
correctly to repo log
Updated Branches:
refs/heads/cj/5094 3d9e0fcca -> 71eaa5319
[#5094] Fixed issue with paging not being applied correctly to repo log
Signed-off-by: Cory Johns <jo...@geek.net>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/71eaa531
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/71eaa531
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/71eaa531
Branch: refs/heads/cj/5094
Commit: 71eaa5319a74d2c617d10a8431c4941043e8958a
Parents: 3d9e0fc
Author: Cory Johns <jo...@geek.net>
Authored: Tue Oct 16 18:10:11 2012 +0000
Committer: Cory Johns <jo...@geek.net>
Committed: Tue Oct 16 18:10:11 2012 +0000
----------------------------------------------------------------------
Allura/allura/model/repository.py | 36 ++++++-----------
Allura/allura/tests/model/test_repo.py | 12 +++---
ForgeGit/forgegit/tests/model/test_repository.py | 6 +-
ForgeSVN/forgesvn/model/svn.py | 2 +-
4 files changed, 22 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/71eaa531/Allura/allura/model/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index 99f9ba2..5255bdb 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -212,25 +212,13 @@ class Repository(Artifact, ActivityObject):
def compute_tree_new(self, commit, path='/'):
return self._impl.compute_tree_new(commit, path)
- def _log(self, rev, skip, max_count):
+ def _log(self, rev, skip, limit):
head = self.commit(rev)
if head is None: return
- for oids in utils.chunked_iter(self.commitlog([head._id]), QSIZE):
- oids = list(oids)
- commits = dict(
- (ci._id, ci) for ci in head.query.find(dict(
- _id={'$in': oids})))
- for oid in oids:
- if skip:
- skip -= 1
- continue
- if max_count:
- max_count -= 1
- ci = commits[oid]
- ci.set_context(self)
- yield ci
- else:
- break
+ for _id in self.commitlog([head._id], skip, limit):
+ ci = head.query.get(_id=_id)
+ ci.set_context(self)
+ yield ci
def init_as_clone(self, source_path, source_name, source_url, copy_hooks=False):
self.upstream_repo.name = source_name
@@ -240,7 +228,7 @@ class Repository(Artifact, ActivityObject):
self._impl.clone_from(source, copy_hooks)
def log(self, branch='master', offset=0, limit=10):
- return list(self._log(rev=branch, skip=offset, max_count=limit))
+ return list(self._log(branch, offset, limit))
def commitlog(self, commit_ids, skip=0, limit=sys.maxint):
seen = set()
@@ -273,12 +261,6 @@ class Repository(Artifact, ActivityObject):
else:
ci = max(commits, key=lambda ci:ci_times[ci])
commits.remove(ci)
- if skip:
- skip -= 1
- continue
- else:
- limit -= 1
- yield ci
# remove this commit from its parents children and add any childless
# parents to the 'ready set'
new_parent = None
@@ -288,6 +270,12 @@ class Repository(Artifact, ActivityObject):
if not children:
commits.add(oid)
new_parent = oid
+ if skip:
+ skip -= 1
+ continue
+ else:
+ limit -= 1
+ yield ci
# Load all the runs to build a commit graph
ci_times = {}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/71eaa531/Allura/allura/tests/model/test_repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_repo.py b/Allura/allura/tests/model/test_repo.py
index a09c8ed..93d1cb3 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -125,14 +125,14 @@ class TestRepo(_TestWithRepo):
@mock.patch.object(M.repo.CommitRunDoc.m, 'get')
def test_log(self, crd):
- head = mock.Mock(_id=4)
- commits = [mock.Mock(_id=i) for i in (1,3,2)]
- commits.append(head)
- head.query.find.return_value = commits
+ head = mock.Mock(name='commit_head', _id=3)
+ commits = dict([(i, mock.Mock(name='commit_%s'%i, _id=i)) for i in range(3)])
+ commits[3] = head
+ head.query.get = lambda _id: commits[_id]
self.repo._impl.commit = mock.Mock(return_value=head)
- crd.return_value = mock.Mock(commit_ids=[4, 3, 2, 1], commit_times=[4, 3, 2, 1], parent_commit_ids=[])
+ crd.return_value = mock.Mock(commit_ids=[3, 2, 1, 0], commit_times=[4, 3, 2, 1], parent_commit_ids=[])
log = self.repo.log()
- assert_equal([c._id for c in log], [4, 3, 2, 1])
+ assert_equal([c._id for c in log], [3, 2, 1, 0])
def test_count_revisions(self):
ci = mock.Mock()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/71eaa531/ForgeGit/forgegit/tests/model/test_repository.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index 684c8d6..445489f 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -62,9 +62,9 @@ class TestNewGit(unittest.TestCase):
'1e146e67985dcd71c74de79613719bef7bddca4a/')
all_cis = self.repo.log(self.rev._id, 0, 1000)
assert len(all_cis) == 4
- assert self.repo.log(self.rev._id, 1,1000) == all_cis[1:]
- assert self.repo.log(self.rev._id, 0,3) == all_cis[:3]
- assert self.repo.log(self.rev._id, 1,2) == all_cis[1:3]
+ assert_equal(self.repo.log(self.rev._id, 1,1000), all_cis[1:])
+ assert_equal(self.repo.log(self.rev._id, 0,3), all_cis[:3])
+ assert_equal(self.repo.log(self.rev._id, 1,2), all_cis[1:3])
for ci in all_cis:
ci.context()
self.rev.tree.ls()
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/71eaa531/ForgeSVN/forgesvn/model/svn.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/model/svn.py b/ForgeSVN/forgesvn/model/svn.py
index 1b84553..23d80eb 100644
--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -66,7 +66,7 @@ class Repository(M.Repository):
return int(ci._id.split(':')[1])
def log(self, branch='HEAD', offset=0, limit=10):
- return list(self._log(rev=branch, skip=offset, max_count=limit))
+ return list(self._log(branch, offset, limit))
def commitlog(self, commit_ids, skip=0, limit=sys.maxint):
ci_id = commit_ids[0]