diff options
author | Stan Hu <stanhu@gmail.com> | 2015-12-03 09:57:56 -0800 |
---|---|---|
committer | Edward Thomson <ethomson@github.com> | 2016-03-17 11:02:26 -0400 |
commit | 7a74590d8f952971088a90c584945ceefe1bf90e (patch) | |
tree | a2cd052f5b559284c92bba7e9fe91aeaae9bb67a | |
parent | f8787098fbc8944afd684ed0e26221e36da2d6f8 (diff) | |
download | libgit2-7a74590d8f952971088a90c584945ceefe1bf90e.tar.gz |
Fix rebase bug and include test for merge=union
-rw-r--r-- | src/merge.c | 2 | ||||
-rw-r--r-- | tests/merge/workdir/simple.c | 36 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/merge.c b/src/merge.c index 767564bf0..1c2375442 100644 --- a/src/merge.c +++ b/src/merge.c @@ -1900,7 +1900,7 @@ int git_merge__iterators( int resolved = 0; /* Check for merge options in .gitattributes */ - if ((error = lookup_file_favor(&opts.file_favor, repo, conflict->our_entry.path) < 0)) + if ((error = lookup_file_favor(&file_opts.favor, repo, conflict->our_entry.path) < 0)) goto done; if ((error = merge_conflict_resolve( diff --git a/tests/merge/workdir/simple.c b/tests/merge/workdir/simple.c index 3cdd15b5a..964532e46 100644 --- a/tests/merge/workdir/simple.c +++ b/tests/merge/workdir/simple.c @@ -330,6 +330,42 @@ void test_merge_workdir_simple__union(void) cl_assert(merge_test_reuc(repo_index, merge_reuc_entries, 4)); } +void test_merge_workdir_simple__gitattributes_union(void) +{ + git_buf conflicting_buf = GIT_BUF_INIT; + + struct merge_index_entry merge_index_entries[] = { + ADDED_IN_MASTER_INDEX_ENTRY, + AUTOMERGEABLE_INDEX_ENTRY, + CHANGED_IN_BRANCH_INDEX_ENTRY, + CHANGED_IN_MASTER_INDEX_ENTRY, + + { 0100644, "72cdb057b340205164478565e91eb71647e66891", 0, "conflicting.txt" }, + + UNCHANGED_INDEX_ENTRY, + }; + + struct merge_reuc_entry merge_reuc_entries[] = { + AUTOMERGEABLE_REUC_ENTRY, + CONFLICTING_REUC_ENTRY, + REMOVED_IN_BRANCH_REUC_ENTRY, + REMOVED_IN_MASTER_REUC_ENTRY + }; + + set_core_autocrlf_to(repo, false); + cl_git_mkfile(TEST_REPO_PATH "/.gitattributes", "conflicting.txt merge=union\n"); + + merge_simple_branch(GIT_MERGE_FILE_FAVOR_NORMAL, 0); + + cl_git_pass(git_futils_readbuffer(&conflicting_buf, + TEST_REPO_PATH "/conflicting.txt")); + cl_assert(strcmp(conflicting_buf.ptr, CONFLICTING_UNION_FILE) == 0); + git_buf_free(&conflicting_buf); + + cl_assert(merge_test_index(repo_index, merge_index_entries, 6)); + cl_assert(merge_test_reuc(repo_index, merge_reuc_entries, 4)); +} + void test_merge_workdir_simple__diff3_from_config(void) { git_config *config; |