aboutsummaryrefslogtreecommitdiff
path: root/git/refs/tag.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2011-05-05 19:43:22 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-05-05 19:43:22 +0200
commit4177eefd7bdaea96a529b00ba9cf751924ede202 (patch)
tree958614c21bd97267e0d06f71bb18d4215ddd87b5 /git/refs/tag.py
parentf54546a9b857ae728033482f3c5c18c9ff3393c3 (diff)
downloadGitPython-4177eefd7bdaea96a529b00ba9cf751924ede202.tar.gz
GitPython-4177eefd7bdaea96a529b00ba9cf751924ede202.zip
Added all code from gitdb to gitpython. Next is to make it generally work. Then the tests will need some work
Diffstat (limited to 'git/refs/tag.py')
-rw-r--r--git/refs/tag.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/git/refs/tag.py b/git/refs/tag.py
index 47c9ea4d..24a8e768 100644
--- a/git/refs/tag.py
+++ b/git/refs/tag.py
@@ -3,7 +3,45 @@ from gitdb.ref.tag import TagReference as GitDB_TagReference
__all__ = ["TagReference", "Tag"]
class TagReference(GitDB_TagReference):
+ """Class representing a lightweight tag reference which either points to a commit
+ ,a tag object or any other object. In the latter case additional information,
+ like the signature or the tag-creator, is available.
+
+ This tag object will always point to a commit object, but may carray additional
+ information in a tag object::
+
+ tagref = TagReference.list_items(repo)[0]
+ print tagref.commit.message
+ if tagref.tag is not None:
+ print tagref.tag.message"""
__slots__ = tuple()
+ _common_path_default = "refs/tags"
+
+ @property
+ def commit(self):
+ """:return: Commit object the tag ref points to"""
+ obj = self.object
+ if obj.type == "commit":
+ return obj
+ elif obj.type == "tag":
+ # it is a tag object which carries the commit as an object - we can point to anything
+ return obj.object
+ else:
+ raise ValueError( "Tag %s points to a Blob or Tree - have never seen that before" % self )
+
+ @property
+ def tag(self):
+ """
+ :return: Tag object this tag ref points to or None in case
+ we are a light weight tag"""
+ obj = self.object
+ if obj.type == "tag":
+ return obj
+ return None
+
+ # make object read-only
+ # It should be reasonably hard to adjust an existing tag
+ object = property(Reference._get_object)
@classmethod
def create(cls, repo, path, ref='HEAD', message=None, force=False, **kwargs):