Repository.CreateCommit
This commit is contained in:
parent
bdfd8736bc
commit
20e2528478
18
commit.go
18
commit.go
|
@ -10,6 +10,7 @@ import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"unsafe"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -74,3 +75,20 @@ func (sig *Signature) Time() time.Time {
|
||||||
loc := time.FixedZone("", sig.Offset*60)
|
loc := time.FixedZone("", sig.Offset*60)
|
||||||
return time.Unix(sig.UnixTime, 0).In(loc)
|
return time.Unix(sig.UnixTime, 0).In(loc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sig *Signature) toC() (*C.git_signature) {
|
||||||
|
var out *C.git_signature
|
||||||
|
|
||||||
|
name := C.CString(sig.Name)
|
||||||
|
defer C.free(unsafe.Pointer(name))
|
||||||
|
|
||||||
|
email := C.CString(sig.Email)
|
||||||
|
defer C.free(unsafe.Pointer(email))
|
||||||
|
|
||||||
|
ret := C.git_signature_new(&out, name, email, C.git_time_t(sig.UnixTime), C.int(sig.Offset))
|
||||||
|
if ret < 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
|
@ -104,19 +104,22 @@ func (v *Repository) Walk() (*RevWalk, error) {
|
||||||
return walk, nil
|
return walk, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO
|
func (v *Repository) CreateCommit(
|
||||||
func (v *Repository) Commit(
|
|
||||||
refname string, author, committer *Signature,
|
refname string, author, committer *Signature,
|
||||||
message string, tree *Tree, parents ...*Commit) (*Oid, error) {
|
message string, tree *Tree, parents ...*Commit) (*Oid, error) {
|
||||||
|
|
||||||
oid := new(Oid)
|
oid := new(Oid)
|
||||||
|
|
||||||
cref := C.CString(refname)
|
cref := C.CString(refname)
|
||||||
defer C.free(unsafe.Pointer(cref))
|
defer C.free(unsafe.Pointer(cref))
|
||||||
|
|
||||||
cmsg := C.CString(message)
|
cmsg := C.CString(message)
|
||||||
defer C.free(unsafe.Pointer(cmsg))
|
defer C.free(unsafe.Pointer(cmsg))
|
||||||
nparents := len(parents)
|
|
||||||
var cparents []*C.git_commit = nil
|
var cparents []*C.git_commit = nil
|
||||||
var parentsarg **C.git_commit = nil
|
var parentsarg **C.git_commit = nil
|
||||||
|
|
||||||
|
nparents:= len(parents)
|
||||||
if nparents > 0 {
|
if nparents > 0 {
|
||||||
cparents = make([]*C.git_commit, nparents)
|
cparents = make([]*C.git_commit, nparents)
|
||||||
for i, v := range parents {
|
for i, v := range parents {
|
||||||
|
@ -125,18 +128,23 @@ func (v *Repository) Commit(
|
||||||
parentsarg = &cparents[0]
|
parentsarg = &cparents[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
authorSig := author.toC()
|
||||||
|
defer C.git_signature_free(authorSig)
|
||||||
|
|
||||||
|
committerSig := committer.toC()
|
||||||
|
defer C.git_signature_free(committerSig)
|
||||||
|
|
||||||
ret := C.git_commit_create(
|
ret := C.git_commit_create(
|
||||||
oid.toC(), v.ptr, cref,
|
oid.toC(), v.ptr, cref,
|
||||||
author.git_signature, committer.git_signature,
|
authorSig, committerSig,
|
||||||
nil, cmsg, tree.ptr, C.int(nparents), parentsarg)
|
nil, cmsg, tree.ptr, C.int(nparents), parentsarg)
|
||||||
|
|
||||||
if ret < GIT_SUCCESS {
|
if ret < 0 {
|
||||||
return nil, LastError()
|
return nil, LastError()
|
||||||
}
|
}
|
||||||
|
|
||||||
return oid, nil
|
return oid, nil
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
func (v *Odb) Free() {
|
func (v *Odb) Free() {
|
||||||
runtime.SetFinalizer(v, nil)
|
runtime.SetFinalizer(v, nil)
|
||||||
|
|
Loading…
Reference in New Issue