diff options
| author | lhchavez <[email protected]> | 2020-02-23 07:05:25 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-02-23 07:05:25 -0800 |
| commit | 21d618136f415486d95965e75af80c0e6688a0d5 (patch) | |
| tree | fb156488aa27d753c7fe7864b9917a48d027b38e /merge.go | |
| parent | 06764f48dce903bf95701c6ef75ad0fe46c0dedf (diff) | |
| parent | a140f2310f56eb06d37454514e67647a8a49d197 (diff) | |
Merge pull request #423 from josharian/more-annotated-commit
merge: add two missing AnnotatedCommit methods
Diffstat (limited to 'merge.go')
| -rw-r--r-- | merge.go | 42 |
1 files changed, 39 insertions, 3 deletions
@@ -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) @@ -49,7 +58,9 @@ func (r *Repository) AnnotatedCommitFromFetchHead(branchName string, remoteURL s return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) { @@ -62,7 +73,10 @@ func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) { if ret < 0 { return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, error) { @@ -76,7 +90,29 @@ func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, e if ret < 0 { return nil, MakeGitError(ret) } - return newAnnotatedCommitFromC(ptr, r), nil + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, 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) + } + + annotatedCommit := newAnnotatedCommitFromC(ptr, r) + runtime.KeepAlive(r) + return annotatedCommit, nil } type MergeTreeFlag int |
