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 2013/02/08 21:57:31 UTC

[2/4] git commit: [#5781] Changed prev/next links to not auto-vivify LCDs or Trees

[#5781] Changed prev/next links to not auto-vivify LCDs or Trees

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/3cc589e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/3cc589e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/3cc589e2

Branch: refs/heads/cj/5781
Commit: 3cc589e2d1160882ebab2f8d5a1ed9e52088970f
Parents: cdf81df
Author: Cory Johns <jo...@geek.net>
Authored: Fri Feb 8 16:46:41 2013 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Fri Feb 8 20:26:50 2013 +0000

----------------------------------------------------------------------
 Allura/allura/model/repo.py |   36 +++++++++++++++++++++---------------
 1 files changed, 21 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3cc589e2/Allura/allura/model/repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repo.py b/Allura/allura/model/repo.py
index 3c48e5e..569cbb3 100644
--- a/Allura/allura/model/repo.py
+++ b/Allura/allura/model/repo.py
@@ -166,16 +166,21 @@ class Commit(RepoObject):
 
     @LazyProperty
     def tree(self):
-        if self.tree_id is None:
+        return self.get_tree(create=True)
+
+    def get_tree(self, create=True):
+        if self.tree_id is None and create:
             self.tree_id = self.repo.compute_tree_new(self)
         if self.tree_id is None:
             return None
         cache = getattr(c, 'model_cache', '') or ModelCache()
         t = cache.get(Tree, dict(_id=self.tree_id))
-        if t is None:
+        if t is None and create:
             self.tree_id = self.repo.compute_tree_new(self)
             t = Tree.query.get(_id=self.tree_id)
-        if t is not None: t.set_context(self)
+            cache.set(Tree, dict(_id=self.tree_id), t)
+        if t is not None:
+            t.set_context(self)
         return t
 
     @LazyProperty
@@ -338,13 +343,14 @@ class Commit(RepoObject):
                 added.remove(rename_info['new'])
         return copied
 
-    def get_path(self, path):
+    def get_path(self, path, create=True):
         path = path.lstrip('/')
         parts = path.split('/')
-        cur = self.tree
-        for part in parts:
-            if part != '':
-                cur = cur[part]
+        cur = self.get_tree(create)
+        if cur is not None:
+            for part in parts:
+                if part != '':
+                    cur = cur[part]
         return cur
 
     def has_path(self, path):
@@ -622,17 +628,17 @@ class Blob(object):
 
     @LazyProperty
     def prev_commit(self):
-        lc = LastCommit.get(self.tree)
+        lc = LastCommit.get(self.tree, create=False)
         if lc:
             last_commit = self.repo.commit(lc.by_name[self.name])
             prev_commit = last_commit.get_parent()
             try:
-                tree = prev_commit and prev_commit.get_path(self.tree.path().rstrip('/'))
+                tree = prev_commit and prev_commit.get_path(self.tree.path().rstrip('/'), create=False)
             except KeyError:
                 return None  # parent tree added this commit
             if not tree or self.name not in tree.by_name:
                 return None  # tree or file added this commit
-            lc = LastCommit.get(tree)
+            lc = LastCommit.get(tree, create=False)
             commit_id = lc and lc.by_name.get(self.name)
             if commit_id:
                 prev_commit = self.repo.commit(commit_id)
@@ -648,11 +654,11 @@ class Blob(object):
             while next:
                 cur = next[0]
                 next = cur.context()['next']
-                other_blob = cur.get_path(path)
+                other_blob = cur.get_path(path, create=False)
                 if other_blob is None or other_blob._id != self._id:
                     return cur
         except:
-            log.exception('Lookup prev_commit')
+            log.exception('Lookup next_commit')
             return None
 
     @LazyProperty
@@ -690,8 +696,8 @@ class Blob(object):
         path = self.path()
         prev = self.prev_commit
         next = self.next_commit
-        if prev is not None: prev = prev.get_path(path)
-        if next is not None: next = next.get_path(path)
+        if prev is not None: prev = prev.get_path(path, create=False)
+        if next is not None: next = next.get_path(path, create=False)
         return dict(
             prev=prev,
             next=next)