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 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() runtime.LockOSThread()
defer runtime.UnlockOSThread() defer runtime.UnlockOSThread()
@ -166,11 +174,12 @@ func (r *Repository) MergeAnalysis(theirHeads []*MergeHead) (MergeAnalysis, erro
} }
ptr := unsafe.Pointer(&gmerge_head_array[0]) ptr := unsafe.Pointer(&gmerge_head_array[0])
var analysis C.git_merge_analysis_t 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 { 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 := make([]*MergeHead, 1)
mergeHeads[0] = mergeHead mergeHeads[0] = mergeHead
a, err := repo.MergeAnalysis(mergeHeads) a, _, err := repo.MergeAnalysis(mergeHeads)
checkFatal(t, err) checkFatal(t, err)
if a != MergeAnalysisUpToDate { if a != MergeAnalysisUpToDate {