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):