summaryrefslogtreecommitdiff
path: root/merge.go
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-03-11 12:29:40 -0700
committerJesse Ezell <[email protected]>2014-03-11 12:29:40 -0700
commitf1e889928a5804a55712266d09acafd1371aceb3 (patch)
treecf30f8ce9fcaec51c3d71ae911a6a8cdaf288d34 /merge.go
parente5946d4009cf58f7a041f647e953a454159e2d4f (diff)
parent1cf81178141c504c62bb3faaa406db665dc5471a (diff)
merge with latest, replace merge wrappers with go code
Diffstat (limited to 'merge.go')
-rw-r--r--merge.go19
1 files changed, 8 insertions, 11 deletions
diff --git a/merge.go b/merge.go
index 59cdd58..d5f5cb9 100644
--- a/merge.go
+++ b/merge.go
@@ -72,9 +72,9 @@ func (r *Repository) MergeHeadFromRef(ref *Reference) (*MergeHead, error) {
type MergeFlag int
const (
- MergeFlagDefault MergeFlag = 0
- MergeNoFastForward = 1
- MergeFastForwardOnly = 2
+ MergeFlagDefault MergeFlag = C.GIT_MERGE_DEFAULT
+ MergeNoFastForward = C.GIT_MERGE_NO_FASTFORWARD
+ MergeFastForwardOnly = C.GIT_MERGE_FASTFORWARD_ONLY
)
type MergeOptions struct {
@@ -187,15 +187,12 @@ func (r *Repository) Merge(theirHeads []*MergeHead, options MergeOptions) (*Merg
var result *C.git_merge_result
copts := options.toC()
-
- cmerge_head_array := C._go_git_make_merge_head_array(C.size_t(len(theirHeads)))
- defer C.free(unsafe.Pointer(cmerge_head_array))
-
- for i, _ := range theirHeads {
- C._go_git_merge_head_array_set(cmerge_head_array, theirHeads[i].ptr, C.size_t(i))
+ gmerge_head_array := make([]*C.git_merge_head, len(theirHeads))
+ for i := 0; i < len(theirHeads); i++ {
+ gmerge_head_array[i] = theirHeads[i].ptr
}
-
- err := C.git_merge(&result, r.ptr, cmerge_head_array, C.size_t(len(theirHeads)), copts)
+ ptr := unsafe.Pointer(&gmerge_head_array[0])
+ err := C.git_merge(&result, r.ptr, (**C.git_merge_head)(ptr), C.size_t(len(theirHeads)), copts)
if err < 0 {
return nil, MakeGitError(err)
}