diff options
| author | Carlos Martín Nieto <[email protected]> | 2015-04-27 23:29:49 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2015-04-27 23:29:49 +0200 |
| commit | f7781c0e0004f76833c6be93409320b5c143e0c8 (patch) | |
| tree | 791b5f551780a5fc963316dac4976780def878c3 /commit.go | |
| parent | 9538c7f750dafaf3752e04b1c1747d7984ca31d0 (diff) | |
| parent | b3e7304abf6f0c4ef50e973acb220c40a5ddac86 (diff) | |
Merge pull request #179 from schani/master
Additions
Diffstat (limited to 'commit.go')
| -rw-r--r-- | commit.go | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -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 +} |
