summaryrefslogtreecommitdiff
path: root/repository.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2014-07-03 08:37:23 +0200
committerCarlos Martín Nieto <[email protected]>2014-07-03 08:37:23 +0200
commitd117fc9aa8b727a59fbdf7b1aa3bd87c60331b6a (patch)
tree834ec9e204148ca901b7daef3c9af9dfbbb3a922 /repository.go
parentae5efcda9be2054734cdc3399a85e6f2ddceacff (diff)
parentb3306bee412e29558ac334d2a4bbc0be7d85e2d5 (diff)
Merge commit 'refs/pull/95/head' of github.com:libgit2/git2go
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/repository.go b/repository.go
index 2354f99..8cc966c 100644
--- a/repository.go
+++ b/repository.go
@@ -164,6 +164,15 @@ func (v *Repository) LookupBlob(id *Oid) (*Blob, error) {
return obj.(*Blob), nil
}
+func (v *Repository) LookupTag(id *Oid) (*Tag, error) {
+ obj, err := v.lookupType(id, ObjectTag)
+ if err != nil {
+ return nil, err
+ }
+
+ return obj.(*Tag), nil
+}
+
func (v *Repository) LookupReference(name string) (*Reference, error) {
cname := C.CString(name)
defer C.free(unsafe.Pointer(cname))
@@ -356,6 +365,30 @@ func (v *Repository) CreateCommit(
return oid, nil
}
+func (v *Repository) CreateTag(
+ name string, commit *Commit, tagger *Signature, message string) (*Oid, error) {
+
+ oid := new(Oid)
+
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+
+ cmessage := C.CString(message)
+ defer C.free(unsafe.Pointer(cmessage))
+
+ taggerSig := tagger.toC()
+ defer C.git_signature_free(taggerSig)
+
+ ctarget := commit.gitObject.ptr
+
+ ret := C.git_tag_create(oid.toC(), v.ptr, cname, ctarget, taggerSig, cmessage, 0)
+ if ret < 0 {
+ return nil, MakeGitError(ret)
+ }
+
+ return oid, nil
+}
+
func (v *Odb) Free() {
runtime.SetFinalizer(v, nil)
C.git_odb_free(v.ptr)