summaryrefslogtreecommitdiff
path: root/git/db/py/resolve.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2011-05-29 21:59:12 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-05-29 21:59:12 +0200
commit0996049122842a343e0ea7fbbecafddb2b4ba9d3 (patch)
treecaf5682e79d1317cd29d9bbab965cf932a1b67ff /git/db/py/resolve.py
parentcd26aaebbda94dc3740e41bbd3f91ba6b1a25c10 (diff)
downloadgitpython-0996049122842a343e0ea7fbbecafddb2b4ba9d3.tar.gz
Intermediate commit with quite some progress in order to put all extra methods on the default Repo implementation into interfaces or something that can be abstracted. It shows that it would indeed be good to keep the differentiation between Repositories which contain an object database as it is clearly easier to setup any combination of repositories that use git and those that do not, with just the addition of one more level of indirection. Lets see how it will end up
Diffstat (limited to 'git/db/py/resolve.py')
-rw-r--r--git/db/py/resolve.py44
1 files changed, 41 insertions, 3 deletions
diff --git a/git/db/py/resolve.py b/git/db/py/resolve.py
index 9cce8efe..94992d11 100644
--- a/git/db/py/resolve.py
+++ b/git/db/py/resolve.py
@@ -5,6 +5,9 @@ from git.db.interface import ReferencesMixin
from git.exc import BadObject
from git.refs import SymbolicReference
from git.objects.base import Object
+from git.refs.head import HEAD
+from git.refs.headref import Head
+from git.refs.tag import TagReference
from git.util import (
join,
isdir,
@@ -281,17 +284,52 @@ class PureReferencesMixin(ReferencesMixin):
re_hexsha_only = re.compile('^[0-9A-Fa-f]{40}$')
re_hexsha_shortened = re.compile('^[0-9A-Fa-f]{4,40}$')
+ #{ Configuration
+ # Types to use when instatiating references
+ TagReferenceCls = TagReference
+ HeadCls = Head
+ ReferenceCls = Reference
+ HEADCls = HEAD
+ #} END configuration
+
def resolve(self, name):
+ return self.resolve_object(name).binsha
+
+ def resolve_object(self, name):
return rev_parse(self, name)
@property
def references(self):
- raise NotImplementedError()
+ return self.ReferenceCls.list_items(self)
@property
def heads(self):
- raise NotImplementedError()
+ return self.HeadCls.list_items(self)
@property
def tags(self):
- raise NotImplementedError()
+ return self.TagReferenceCls.list_items(self)
+
+ def tag(self, name):
+ return self.tags[name]
+
+ @property
+ def head(self):
+ return self.HEADCls(self,'HEAD')
+
+ def create_head(self, path, commit='HEAD', force=False, logmsg=None ):
+ return self.HeadCls.create(self, path, commit, force, logmsg)
+
+ def delete_head(self, *heads, **kwargs):
+ return self.HeadCls.delete(self, *heads, **kwargs)
+
+ def create_tag(self, path, ref='HEAD', message=None, force=False, **kwargs):
+ return self.TagReferenceCls.create(self, path, ref, message, force, **kwargs)
+
+ def delete_tag(self, *tags):
+ return self.TagReferenceCls.delete(self, *tags)
+
+
+ # compat
+ branches = heads
+ refs = references