diff --git a/merge.go b/merge.go index bfbf9a3..cdf7f75 100644 --- a/merge.go +++ b/merge.go @@ -27,6 +27,15 @@ func newAnnotatedCommitFromC(ptr *C.git_annotated_commit, r *Repository) *Annota return mh } +func (mh *AnnotatedCommit) Id() *Oid { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ret := newOidFromC(C.git_annotated_commit_id(mh.ptr)) + runtime.KeepAlive(mh) + return ret +} + func (mh *AnnotatedCommit) Free() { runtime.SetFinalizer(mh, nil) C.git_annotated_commit_free(mh.ptr) @@ -79,6 +88,22 @@ func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, e return newAnnotatedCommitFromC(ptr, r), nil } +func (r *Repository) AnnotatedCommitFromRevspec(spec string) (*AnnotatedCommit, error) { + crevspec := C.CString(spec) + defer C.free(unsafe.Pointer(crevspec)) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + var ptr *C.git_annotated_commit + ret := C.git_annotated_commit_from_revspec(&ptr, r.ptr, crevspec) + runtime.KeepAlive(r) + if ret < 0 { + return nil, MakeGitError(ret) + } + return newAnnotatedCommitFromC(ptr, r), nil +} + type MergeTreeFlag int const (