summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2014-05-31 16:47:35 +0200
committerCarlos Martín Nieto <[email protected]>2014-05-31 16:47:35 +0200
commit7906bdbdceddff34827ba13640b6d03bc813139f (patch)
treeefab136c622306aff0f2a771beb8f28671d9fa76
parent8a73c75f1a68f2855d03e6d2ce45c95c414aa71a (diff)
Merge: merge analysis now returns the user's preference
-rw-r--r--merge.go17
-rw-r--r--merge_test.go2
2 files changed, 14 insertions, 5 deletions
diff --git a/merge.go b/merge.go
index 48a28b0..ccf4f7b 100644
--- a/merge.go
+++ b/merge.go
@@ -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
}
diff --git a/merge_test.go b/merge_test.go
index 3f9dc33..cc7af81 100644
--- a/merge_test.go
+++ b/merge_test.go
@@ -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 {