You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2012/09/19 20:43:27 UTC
[32/50] git commit: [#4865] Implement compute_tree_new fall-through
for GitRepository to prevent errors when TreeDoc is missing
[#4865] Implement compute_tree_new fall-through for GitRepository to prevent errors when TreeDoc is missing
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/c7b1b266
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c7b1b266
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c7b1b266
Branch: refs/heads/master
Commit: c7b1b2662123d1b2e690d88bca7767f3d045638b
Parents: 43a3446
Author: Cory Johns <jo...@geek.net>
Authored: Mon Sep 10 17:04:49 2012 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Mon Sep 10 18:52:43 2012 +0000
----------------------------------------------------------------------
ForgeGit/forgegit/model/git_repo.py | 6 +++++
ForgeGit/forgegit/tests/model/test_repository.py | 20 ++++++++++++++++-
2 files changed, 25 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c7b1b266/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index 8db72bf..d8270f5 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -228,6 +228,7 @@ class GitImplementation(M.RepositoryImplementation):
obj.type = o.type
doc.other_ids.append(obj)
doc.m.save(safe=False)
+ return doc
def log(self, object_id, skip, count):
obj = self._git.commit(object_id)
@@ -278,6 +279,11 @@ class GitImplementation(M.RepositoryImplementation):
containing_branches = [br.strip(' *') for br in containing_branches.split('\n')]
return containing_branches, tags
+ def compute_tree_new(self, commit, tree_path='/'):
+ ci = self._git.rev_parse(commit._id)
+ tree = self.refresh_tree_info(ci.tree, set())
+ return tree._id
+
class _OpenedGitBlob(object):
CHUNK_SIZE=4096
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c7b1b266/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 eba41b5..d020e27 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -9,7 +9,7 @@ pylons.c = pylons.tmpl_context
pylons.g = pylons.app_globals
from pylons import c, g
from ming.base import Object
-from ming.orm import ThreadLocalORMSession
+from ming.orm import ThreadLocalORMSession, session
from nose.tools import assert_equal
from alluratest.controller import setup_basic_test, setup_global_objects
@@ -165,6 +165,24 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase):
self.repo.heads.append(Object(name='HEAD', object_id='deadbeef'))
self.repo.commit('HEAD')
q.get.assert_called_with(_id='deadbeef')
+ # test the auto-gen tree fall-through
+ orig_tree = M.repo.Tree.query.get(_id=entry.tree_id)
+ assert orig_tree
+ # force it to regenerate the tree
+ M.repo.Tree.query.remove(dict(_id=entry.tree_id))
+ session(orig_tree).flush()
+ # ensure we don't just pull it from the session cache
+ session(orig_tree).expunge(orig_tree)
+ # ensure we don't just use the LazyProperty copy
+ session(entry).expunge(entry)
+ entry = self.repo.commit(entry._id)
+ # regenerate the tree
+ new_tree = entry.tree
+ assert new_tree
+ self.assertEqual(new_tree._id, orig_tree._id)
+ self.assertEqual(new_tree.tree_ids, orig_tree.tree_ids)
+ self.assertEqual(new_tree.blob_ids, orig_tree.blob_ids)
+ self.assertEqual(new_tree.other_ids, orig_tree.other_ids)
class TestGitCommit(unittest.TestCase):