Additions #179

Merged
schani merged 4 commits from master into master 2015-04-27 16:29:49 -05:00
1 changed files with 38 additions and 0 deletions
Showing only changes of commit 43102043fb - Show all commits

View File

@ -9,6 +9,7 @@ import "C"
import (
"runtime"
"unsafe"
)
// Commit
@ -70,3 +71,40 @@ func (c *Commit) ParentId(n uint) *Oid {
func (c *Commit) ParentCount() uint {
return uint(C.git_commit_parentcount(c.cast_ptr))
}
func (c *Commit) Amend(refname string, author, committer *Signature, message string, tree *Tree) (*Oid, error) {
var cref *C.char
if refname == "" {
cref = nil
} else {
cref = C.CString(refname)
defer C.free(unsafe.Pointer(cref))
}
cmsg := C.CString(message)
defer C.free(unsafe.Pointer(cmsg))
runtime.LockOSThread()
defer runtime.UnlockOSThread()
authorSig, err := author.toC()
if err != nil {
return nil, err
}
defer C.git_signature_free(authorSig)
committerSig, err := committer.toC()
if err != nil {
return nil, err
}
defer C.git_signature_free(committerSig)
oid := new(Oid)
cerr := C.git_commit_amend(oid.toC(), c.cast_ptr, cref, authorSig, committerSig, nil, cmsg, tree.cast_ptr)
if cerr < 0 {
return nil, MakeGitError(cerr)
}
return oid, nil
}