summaryrefslogtreecommitdiff
path: root/merge.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2016-03-07 11:17:10 +0100
committerCarlos Martín Nieto <[email protected]>2016-03-07 11:22:53 +0100
commit2ae7d13ba1037c7fa579fc52263ea280b37244ea (patch)
treef2509df04ec4e6187943aad83ea672e660102a8b /merge.go
parentfa644d2fc9efa3baee93b525212d76dfa17a5db5 (diff)
parente095c85fd06b5820d2f0098ff3e66b266553dbd5 (diff)
Merge branch 'next'
Diffstat (limited to 'merge.go')
-rw-r--r--merge.go25
1 files changed, 16 insertions, 9 deletions
diff --git a/merge.go b/merge.go
index 756c792..b3fd818 100644
--- a/merge.go
+++ b/merge.go
@@ -82,12 +82,19 @@ func (r *Repository) AnnotatedCommitFromRef(ref *Reference) (*AnnotatedCommit, e
type MergeTreeFlag int
const (
- MergeTreeFindRenames MergeTreeFlag = C.GIT_MERGE_TREE_FIND_RENAMES
+ // Detect renames that occur between the common ancestor and the "ours"
+ // side or the common ancestor and the "theirs" side. This will enable
+ // the ability to merge between a modified and renamed file.
+ MergeTreeFindRenames MergeTreeFlag = C.GIT_MERGE_FIND_RENAMES
+ // If a conflict occurs, exit immediately instead of attempting to
+ // continue resolving conflicts. The merge operation will fail with
+ // GIT_EMERGECONFLICT and no index will be returned.
+ MergeTreeFailOnConflict MergeTreeFlag = C.GIT_MERGE_FAIL_ON_CONFLICT
)
type MergeOptions struct {
- Version uint
- TreeFlags MergeTreeFlag
+ Version uint
+ TreeFlags MergeTreeFlag
RenameThreshold uint
TargetLimit uint
@@ -99,7 +106,7 @@ type MergeOptions struct {
func mergeOptionsFromC(opts *C.git_merge_options) MergeOptions {
return MergeOptions{
Version: uint(opts.version),
- TreeFlags: MergeTreeFlag(opts.tree_flags),
+ TreeFlags: MergeTreeFlag(opts.flags),
RenameThreshold: uint(opts.rename_threshold),
TargetLimit: uint(opts.target_limit),
FileFavor: MergeFileFavor(opts.file_favor),
@@ -125,7 +132,7 @@ func (mo *MergeOptions) toC() *C.git_merge_options {
}
return &C.git_merge_options{
version: C.uint(mo.Version),
- tree_flags: C.git_merge_tree_flag_t(mo.TreeFlags),
+ flags: C.git_merge_flag_t(mo.TreeFlags),
rename_threshold: C.uint(mo.RenameThreshold),
target_limit: C.uint(mo.TargetLimit),
file_favor: C.git_merge_file_favor_t(mo.FileFavor),
@@ -263,10 +270,10 @@ func (r *Repository) MergeBases(one, two *Oid) ([]*Oid, error) {
}
oids := make([]*Oid, coids.count)
- hdr := reflect.SliceHeader {
+ hdr := reflect.SliceHeader{
Data: uintptr(unsafe.Pointer(coids.ids)),
- Len: int(coids.count),
- Cap: int(coids.count),
+ Len: int(coids.count),
+ Cap: int(coids.count),
}
goSlice := *(*[]C.git_oid)(unsafe.Pointer(&hdr))
@@ -354,7 +361,7 @@ func populateCMergeFileOptions(c *C.git_merge_file_options, options MergeFileOpt
c.our_label = C.CString(options.OurLabel)
c.their_label = C.CString(options.TheirLabel)
c.favor = C.git_merge_file_favor_t(options.Favor)
- c.flags = C.uint(options.Flags)
+ c.flags = C.git_merge_file_flag_t(options.Flags)
}
func freeCMergeFileOptions(c *C.git_merge_file_options) {