]> git.proxmox.com Git - libgit2.git/commitdiff
Fix rebase bug and include test for merge=union
authorStan Hu <stanhu@gmail.com>
Thu, 3 Dec 2015 17:57:56 +0000 (09:57 -0800)
committerEdward Thomson <ethomson@github.com>
Thu, 17 Mar 2016 15:02:26 +0000 (11:02 -0400)
src/merge.c
tests/merge/workdir/simple.c

index 767564bf02701b50014457a3194732ec0223a670..1c2375442509a868bcaea63dfe4285eec4431832 100644 (file)
@@ -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(
index 3cdd15b5a73dcb9d5576f1781beb990f9d38b239..964532e46f2d2d53e6fe482fa6980904aa991940 100644 (file)
@@ -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;