diff options
| author | Frank Benkstein <[email protected]> | 2014-06-09 23:19:17 +0200 |
|---|---|---|
| committer | Frank Benkstein <[email protected]> | 2014-06-09 23:19:17 +0200 |
| commit | bbdc7a825d1c7e65516cbc92e72335bf1f35c2f0 (patch) | |
| tree | 878f12f83c0701cd849c0458deb29cf2273735f4 /repository.go | |
| parent | 3ca566e105e8156a2583f36e9dd9e06ed3b3564c (diff) | |
add support for annotated tags
Diffstat (limited to 'repository.go')
| -rw-r--r-- | repository.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/repository.go b/repository.go index 2354f99..c380de1 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) |
