Support git_repository_message, git_repository_message_remove (#734) (#737)

Closes #646

(cherry picked from commit 07147a8ea8)

Co-authored-by: Byoungchan Lee <thisisbclee@gmail.com>
This commit is contained in:
github-actions[bot] 2021-02-03 06:29:14 -08:00 committed by GitHub
parent 8c043d028e
commit bbb77f1bdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 0 deletions

View File

@ -43,6 +43,14 @@ func TestMergeWithSelf(t *testing.T) {
mergeHeads[0] = mergeHead
err = repo.Merge(mergeHeads, nil, nil)
checkFatal(t, err)
mergeMessage, err := repo.Message()
checkFatal(t, err)
expectedMessage := "Merge branch 'master'\n"
if mergeMessage != expectedMessage {
t.Errorf("merge Message = %v, want %v", mergeMessage, expectedMessage)
}
}
func TestMergeAnalysisWithSelf(t *testing.T) {

View File

@ -688,3 +688,39 @@ func (r *Repository) ClearGitIgnoreRules() error {
}
return nil
}
// Message retrieves git's prepared message.
// Operations such as git revert/cherry-pick/merge with the -n option stop just
// short of creating a commit with the changes and save their prepared message
// in .git/MERGE_MSG so the next git-commit execution can present it to the
// user for them to amend if they wish.
//
// Use this function to get the contents of this file. Don't forget to remove
// the file after you create the commit.
func (r *Repository) Message() (string, error) {
buf := C.git_buf{}
defer C.git_buf_free(&buf)
runtime.LockOSThread()
defer runtime.UnlockOSThread()
cErr := C.git_repository_message(&buf, r.ptr)
runtime.KeepAlive(r)
if cErr < 0 {
return "", MakeGitError(cErr)
}
return C.GoString(buf.ptr), nil
}
// RemoveMessage removes git's prepared message.
func (r *Repository) RemoveMessage() error {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
cErr := C.git_repository_message_remove(r.ptr)
runtime.KeepAlive(r)
if cErr < 0 {
return MakeGitError(cErr)
}
return nil
}