merge: add two missing AnnotatedCommit methods #423

Merged
josharian merged 3 commits from more-annotated-commit into master 2020-02-23 09:05:26 -06:00
2 changed files with 36 additions and 4 deletions
Showing only changes of commit a140f2310f - Show all commits

View File

@ -58,7 +58,9 @@ func (r *Repository) AnnotatedCommitFromFetchHead(branchName string, remoteURL s
return nil, MakeGitError(ret) 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) { func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) {
@ -71,7 +73,10 @@ func (r *Repository) LookupAnnotatedCommit(oid *Oid) (*AnnotatedCommit, error) {
if ret < 0 { if ret < 0 {
return nil, MakeGitError(ret) 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) { func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, error) {
@ -85,7 +90,10 @@ func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, e
if ret < 0 { if ret < 0 {
return nil, MakeGitError(ret) 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) { func (r *Repository) AnnotatedCommitFromRevspec(spec string) (*AnnotatedCommit, error) {
@ -101,7 +109,10 @@ func (r *Repository) AnnotatedCommitFromRevspec(spec string) (*AnnotatedCommit,
if ret < 0 { if ret < 0 {
return nil, MakeGitError(ret) return nil, MakeGitError(ret)
} }
return newAnnotatedCommitFromC(ptr, r), nil
annotatedCommit := newAnnotatedCommitFromC(ptr, r)
runtime.KeepAlive(r)
return annotatedCommit, nil
} }
type MergeTreeFlag int type MergeTreeFlag int

View File

@ -5,6 +5,22 @@ import (
"time" "time"
) )
func TestAnnotatedCommitFromRevspec(t *testing.T) {
t.Parallel()
repo := createTestRepo(t)
defer cleanupTestRepo(t, repo)
seedTestRepo(t, repo)
mergeHead, err := repo.AnnotatedCommitFromRevspec("refs/heads/master")
checkFatal(t, err)
expectedId := "473bf778b67b6d53e2ab289e0f1a2e8addef2fc2"
if mergeHead.Id().String() != expectedId {
t.Errorf("mergeHead.Id() = %v, want %v", mergeHead.Id(), expectedId)
}
}
func TestMergeWithSelf(t *testing.T) { func TestMergeWithSelf(t *testing.T) {
t.Parallel() t.Parallel()
repo := createTestRepo(t) repo := createTestRepo(t)
@ -18,6 +34,11 @@ func TestMergeWithSelf(t *testing.T) {
mergeHead, err := repo.AnnotatedCommitFromRef(master) mergeHead, err := repo.AnnotatedCommitFromRef(master)
checkFatal(t, err) checkFatal(t, err)
expectedId := "473bf778b67b6d53e2ab289e0f1a2e8addef2fc2"
if mergeHead.Id().String() != expectedId {
t.Errorf("mergeHead.Id() = %v, want %v", mergeHead.Id(), expectedId)
}
mergeHeads := make([]*AnnotatedCommit, 1) mergeHeads := make([]*AnnotatedCommit, 1)
mergeHeads[0] = mergeHead mergeHeads[0] = mergeHead
err = repo.Merge(mergeHeads, nil, nil) err = repo.Merge(mergeHeads, nil, nil)