summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Ezell <[email protected]>2014-02-28 14:33:38 -0800
committerJesse Ezell <[email protected]>2014-02-28 14:33:38 -0800
commite5946d4009cf58f7a041f647e953a454159e2d4f (patch)
treedbd71b0290a3fd31fd9ef60169eec946215db66c
parent6af4d4a82534f0cebc3d9ac680f83da1aace884a (diff)
Add defaults, add simple test, merge heads should be pointer array
-rw-r--r--merge.go12
-rw-r--r--merge_test.go27
2 files changed, 38 insertions, 1 deletions
diff --git a/merge.go b/merge.go
index 570c361..59cdd58 100644
--- a/merge.go
+++ b/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()
diff --git a/merge_test.go b/merge_test.go
new file mode 100644
index 0000000..9bf9b9d
--- /dev/null
+++ b/merge_test.go
@@ -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")
+ }
+}