summaryrefslogtreecommitdiff
path: root/git/db/py/resolve.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2011-05-30 01:23:28 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-05-30 01:23:28 +0200
commit112bb1672d6b28f203e7839e320b985486636800 (patch)
tree755fb8dcab211678697f6e03cf37122592b7c573 /git/db/py/resolve.py
parent0996049122842a343e0ea7fbbecafddb2b4ba9d3 (diff)
downloadgitpython-112bb1672d6b28f203e7839e320b985486636800.tar.gz
Finished moving all repository methods to the respective interfaces and implementations. It seems theoretically work together now, although it clearly is much more complex than ever before.
The repo package was slimmed down to being a module once again, which is only there for compatability actually
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')