Merge functions (in progress) #63
12
merge.go
12
merge.go
|
@ -85,6 +85,12 @@ type MergeOptions struct {
|
|||
//TODO: CheckoutOptions CheckoutOptions
|
||||
}
|
||||
|
||||
func DefaultMergeOptions() MergeOptions {
|
||||
options := MergeOptions{Version: 1}
|
||||
options.TreeOptions = DefaultMergeTreeOptions()
|
||||
return options
|
||||
}
|
||||
|
||||
func (mo *MergeOptions) toC() *C.git_merge_opts {
|
||||
return &C.git_merge_opts{
|
||||
version: C.uint(mo.Version),
|
||||
|
@ -117,6 +123,10 @@ type MergeTreeOptions struct {
|
|||
FileFavor MergeFileFavorType
|
||||
}
|
||||
|
||||
func DefaultMergeTreeOptions() MergeTreeOptions {
|
||||
return MergeTreeOptions{Version: 1}
|
||||
}
|
||||
|
||||
func (mo *MergeTreeOptions) toC() *C.git_merge_tree_opts {
|
||||
return &C.git_merge_tree_opts{
|
||||
version: C.uint(mo.Version),
|
||||
|
@ -170,7 +180,7 @@ func (mr *MergeResult) FastForwardId() (*Oid, error) {
|
|||
return newOidFromC(&oid), nil
|
||||
}
|
||||
|
||||
func (r *Repository) Merge(theirHeads []MergeHead, options MergeOptions) (*MergeResult, error) {
|
||||
func (r *Repository) Merge(theirHeads []*MergeHead, options MergeOptions) (*MergeResult, error) {
|
||||
runtime.LockOSThread()
|
||||
defer runtime.UnlockOSThread()
|
||||
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package git
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_Merge_With_Self(t *testing.T) {
|
||||
|
||||
repo := createTestRepo(t)
|
||||
seedTestRepo(t, repo)
|
||||
|
||||
master, err := repo.LookupReference("refs/heads/master")
|
||||
checkFatal(t, err)
|
||||
|
||||
mergeHead, err := repo.MergeHeadFromRef(master)
|
||||
checkFatal(t, err)
|
||||
|
||||
options := DefaultMergeOptions()
|
||||
mergeHeads := make([]*MergeHead, 1)
|
||||
mergeHeads[0] = mergeHead
|
||||
results, err := repo.Merge(mergeHeads, options)
|
||||
checkFatal(t, err)
|
||||
|
||||
if !results.IsUpToDate() {
|
||||
t.Fatal("Expected up to date")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue