summaryrefslogtreecommitdiff
path: root/git/db/py/resolve.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/db/py/resolve.py')
-rw-r--r--git/db/py/resolve.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/git/db/py/resolve.py b/git/db/py/resolve.py
index 94992d11..d0685747 100644
--- a/git/db/py/resolve.py
+++ b/git/db/py/resolve.py
@@ -5,6 +5,7 @@ from git.db.interface import ReferencesMixin
from git.exc import BadObject
from git.refs import SymbolicReference
from git.objects.base import Object
+from git.objects.commit import Commit
from git.refs.head import HEAD
from git.refs.headref import Head
from git.refs.tag import TagReference
@@ -290,6 +291,7 @@ class PureReferencesMixin(ReferencesMixin):
HeadCls = Head
ReferenceCls = Reference
HEADCls = HEAD
+ CommitCls = Commit
#} END configuration
def resolve(self, name):
@@ -313,6 +315,30 @@ class PureReferencesMixin(ReferencesMixin):
def tag(self, name):
return self.tags[name]
+
+ def commit(self, rev=None):
+ if rev is None:
+ return self.head.commit
+ else:
+ return self.resolve_object(str(rev)+"^0")
+ #END handle revision
+
+ def iter_trees(self, *args, **kwargs):
+ return ( c.tree for c in self.iter_commits(*args, **kwargs) )
+
+ def tree(self, rev=None):
+ if rev is None:
+ return self.head.commit.tree
+ else:
+ return self.resolve_object(str(rev)+"^{tree}")
+
+ def iter_commits(self, rev=None, paths='', **kwargs):
+ if rev is None:
+ rev = self.head.commit
+
+ return self.CommitCls.iter_items(self, rev, paths, **kwargs)
+
+
@property
def head(self):
return self.HEADCls(self,'HEAD')