summaryrefslogtreecommitdiff
path: root/lib/git/tree.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git/tree.py')
-rw-r--r--lib/git/tree.py22
1 files changed, 6 insertions, 16 deletions
diff --git a/lib/git/tree.py b/lib/git/tree.py
index 86e893ef..1ed3396d 100644
--- a/lib/git/tree.py
+++ b/lib/git/tree.py
@@ -21,28 +21,18 @@ class Tree(LazyMixin):
setattr(self, k, v)
def __bake__(self):
- temp = Tree.construct(self.repo, self.id)
- self.contents = temp.contents
+ # Ensure the treeish references directly a tree
+ treeish = self.id
+ if not treeish.endswith(':'):
+ treeish = treeish + ':'
- @classmethod
- def construct(cls, repo, treeish, paths = []):
- output = repo.git.ls_tree(treeish, *paths)
- return Tree(repo, id=treeish).construct_initialize(repo, treeish, output)
-
- def construct_initialize(self, repo, id, text):
- self.repo = repo
- self.id = id
+ # Read the tree contents.
self.contents = {}
- self.__baked__ = False
-
- for line in text.splitlines():
+ for line in self.repo.git.ls_tree(self.id).splitlines():
obj = self.content_from_string(self.repo, line)
if obj:
self.contents[obj.name] = obj
- self.__bake_it__()
- return self
-
def content_from_string(self, repo, text):
"""
Parse a content item and create the appropriate object