Merge: merge analysis now returns the user's preference

This commit is contained in:
Carlos Martín Nieto 2014-05-31 16:47:35 +02:00
parent 8a73c75f1a
commit 7906bdbdce
2 changed files with 14 additions and 5 deletions

View File

@ -156,7 +156,15 @@ const (
MergeAnalysisUnborn = C.GIT_MERGE_ANALYSIS_UNBORN
)
func (r *Repository) MergeAnalysis(theirHeads []*MergeHead) (MergeAnalysis, error) {
type MergePreference int
const (
MergePreferenceNone MergePreference = C.GIT_MERGE_PREFERENCE_NONE
MergePreferenceNoFastForward = C.GIT_MERGE_PREFERENCE_NO_FASTFORWARD
MergePreferenceFastForwardOnly = C.GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY
)
func (r *Repository) MergeAnalysis(theirHeads []*MergeHead) (MergeAnalysis, MergePreference, error) {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
@ -166,11 +174,12 @@ func (r *Repository) MergeAnalysis(theirHeads []*MergeHead) (MergeAnalysis, erro
}
ptr := unsafe.Pointer(&gmerge_head_array[0])
var analysis C.git_merge_analysis_t
err := C.git_merge_analysis(&analysis, r.ptr, (**C.git_merge_head)(ptr), C.size_t(len(theirHeads)))
var preference C.git_merge_preference_t
err := C.git_merge_analysis(&analysis, &preference, r.ptr, (**C.git_merge_head)(ptr), C.size_t(len(theirHeads)))
if err < 0 {
return MergeAnalysisNone, MakeGitError(err)
return MergeAnalysisNone, MergePreferenceNone, MakeGitError(err)
}
return MergeAnalysis(analysis), nil
return MergeAnalysis(analysis), MergePreference(preference), nil
}

View File

@ -34,7 +34,7 @@ func TestMergeAnalysisWithSelf(t *testing.T) {
mergeHeads := make([]*MergeHead, 1)
mergeHeads[0] = mergeHead
a, err := repo.MergeAnalysis(mergeHeads)
a, _, err := repo.MergeAnalysis(mergeHeads)
checkFatal(t, err)
if a != MergeAnalysisUpToDate {