diff --git a/tests/libgit2/merge/trees/renames.c b/tests/libgit2/merge/trees/renames.c index a27945ee0..9507b51bc 100644 --- a/tests/libgit2/merge/trees/renames.c +++ b/tests/libgit2/merge/trees/renames.c @@ -350,3 +350,22 @@ void test_merge_trees_renames__cache_recomputation(void) git_tree_free(our_tree); git__free(data); } + +void test_merge_trees_renames__emptyfile_renames(void) +{ + git_index *index; + git_merge_options *opts = NULL; + + struct merge_index_entry merge_index_entries[] = { + { 0100644, "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", 1, "bar" }, + { 0100644, "60b12be2d2f57977ce83d8dfd32e2394ac1ba1a2", 3, "bar" }, + { 0100644, "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", 0, "boo" }, + { 0100644, "e50a49f9558d09d4d3bfc108363bb24c127ed263", 0, "foo" }, + }; + + cl_git_pass(merge_trees_from_branches(&index, repo, + "emptyfile_renames", "emptyfile_renames-branch", + opts)); + cl_assert(merge_test_index(index, merge_index_entries, 4)); + git_index_free(index); +} diff --git a/tests/libgit2/merge/trees/trivial.c b/tests/libgit2/merge/trees/trivial.c index 7f9d918e8..287a53cfe 100644 --- a/tests/libgit2/merge/trees/trivial.c +++ b/tests/libgit2/merge/trees/trivial.c @@ -25,7 +25,7 @@ void test_merge_trees_trivial__cleanup(void) } -static int merge_trivial(git_index **index, const char *ours, const char *theirs, bool ancestor_use_parent) +static int merge_trivial(git_index **index, const char *ours, const char *theirs) { git_commit *our_commit, *their_commit, *ancestor_commit; git_tree *our_tree, *their_tree, *ancestor_tree; @@ -42,12 +42,8 @@ static int merge_trivial(git_index **index, const char *ours, const char *theirs cl_git_pass(git_reference_name_to_id(&their_oid, repo, branch_buf.ptr)); cl_git_pass(git_commit_lookup(&their_commit, repo, &their_oid)); - if (!ancestor_use_parent) { - cl_git_pass(git_merge_base(&ancestor_oid, repo, git_commit_id(our_commit), git_commit_id(their_commit))); - cl_git_pass(git_commit_lookup(&ancestor_commit, repo, &ancestor_oid)); - } else { - cl_git_pass(git_commit_parent(&ancestor_commit, their_commit, 0)); - } + cl_git_pass(git_merge_base(&ancestor_oid, repo, git_commit_id(our_commit), git_commit_id(their_commit))); + cl_git_pass(git_commit_lookup(&ancestor_commit, repo, &ancestor_oid)); cl_git_pass(git_commit_tree(&ancestor_tree, ancestor_commit)); cl_git_pass(git_commit_tree(&our_tree, our_commit)); @@ -88,7 +84,7 @@ void test_merge_trees_trivial__2alt(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-2alt", "trivial-2alt-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-2alt", "trivial-2alt-branch")); cl_assert(entry = git_index_get_bypath(result, "new-in-branch.txt", 0)); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -103,7 +99,7 @@ void test_merge_trees_trivial__3alt(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-3alt", "trivial-3alt-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-3alt", "trivial-3alt-branch")); cl_assert(entry = git_index_get_bypath(result, "new-in-3alt.txt", 0)); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -118,7 +114,7 @@ void test_merge_trees_trivial__4(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-4", "trivial-4-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-4", "trivial-4-branch")); cl_assert((entry = git_index_get_bypath(result, "new-and-different.txt", 0)) == NULL); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -136,7 +132,7 @@ void test_merge_trees_trivial__5alt_1(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-5alt-1", "trivial-5alt-1-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-5alt-1", "trivial-5alt-1-branch")); cl_assert(entry = git_index_get_bypath(result, "new-and-same.txt", 0)); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -151,7 +147,7 @@ void test_merge_trees_trivial__5alt_2(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-5alt-2", "trivial-5alt-2-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-5alt-2", "trivial-5alt-2-branch")); cl_assert(entry = git_index_get_bypath(result, "modified-to-same.txt", 0)); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -167,7 +163,7 @@ void test_merge_trees_trivial__6(void) const git_index_entry *entry; const git_index_reuc_entry *reuc; - cl_git_pass(merge_trivial(&result, "trivial-6", "trivial-6-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-6", "trivial-6-branch")); cl_assert((entry = git_index_get_bypath(result, "removed-in-both.txt", 0)) == NULL); cl_assert(git_index_reuc_entrycount(result) == 1); @@ -185,7 +181,7 @@ void test_merge_trees_trivial__8(void) const git_index_entry *entry; const git_index_reuc_entry *reuc; - cl_git_pass(merge_trivial(&result, "trivial-8", "trivial-8-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-8", "trivial-8-branch")); cl_assert((entry = git_index_get_bypath(result, "removed-in-8.txt", 0)) == NULL); @@ -203,7 +199,7 @@ void test_merge_trees_trivial__7(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-7", "trivial-7-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-7", "trivial-7-branch")); cl_assert((entry = git_index_get_bypath(result, "removed-in-7.txt", 0)) == NULL); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -222,7 +218,7 @@ void test_merge_trees_trivial__10(void) const git_index_entry *entry; const git_index_reuc_entry *reuc; - cl_git_pass(merge_trivial(&result, "trivial-10", "trivial-10-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-10", "trivial-10-branch")); cl_assert((entry = git_index_get_bypath(result, "removed-in-10-branch.txt", 0)) == NULL); @@ -240,7 +236,7 @@ void test_merge_trees_trivial__9(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-9", "trivial-9-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-9", "trivial-9-branch")); cl_assert((entry = git_index_get_bypath(result, "removed-in-9-branch.txt", 0)) == NULL); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -259,7 +255,7 @@ void test_merge_trees_trivial__13(void) const git_index_entry *entry; git_oid expected_oid; - cl_git_pass(merge_trivial(&result, "trivial-13", "trivial-13-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-13", "trivial-13-branch")); cl_assert(entry = git_index_get_bypath(result, "modified-in-13.txt", 0)); cl_git_pass(git_oid__fromstr(&expected_oid, "1cff9ec6a47a537380dedfdd17c9e76d74259a2b", GIT_OID_SHA1)); @@ -278,7 +274,7 @@ void test_merge_trees_trivial__14(void) const git_index_entry *entry; git_oid expected_oid; - cl_git_pass(merge_trivial(&result, "trivial-14", "trivial-14-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-14", "trivial-14-branch")); cl_assert(entry = git_index_get_bypath(result, "modified-in-14-branch.txt", 0)); cl_git_pass(git_oid__fromstr(&expected_oid, "26153a3ff3649b6c2bb652d3f06878c6e0a172f9", GIT_OID_SHA1)); @@ -296,7 +292,7 @@ void test_merge_trees_trivial__11(void) git_index *result; const git_index_entry *entry; - cl_git_pass(merge_trivial(&result, "trivial-11", "trivial-11-branch", false)); + cl_git_pass(merge_trivial(&result, "trivial-11", "trivial-11-branch")); cl_assert((entry = git_index_get_bypath(result, "modified-in-both.txt", 0)) == NULL); cl_assert(git_index_reuc_entrycount(result) == 0); @@ -308,22 +304,3 @@ void test_merge_trees_trivial__11(void) git_index_free(result); } - -/* 15: ancest:remote^, head:head, remote:remote = result:no merge */ -void test_merge_trees_trivial__15(void) -{ - git_index *result; - const git_index_entry *entry; - - /* Can't use merge_trivialfalsehere because a different ancestor is used. */ - cl_git_pass(merge_trivial(&result, "trivial-15", "trivial-15-branch", true)); - - cl_assert((entry = git_index_get_bypath(result, "another-new-empty-15.txt", GIT_INDEX_STAGE_NORMAL)) == NULL); - cl_assert((entry = git_index_get_bypath(result, "another-new-empty-15.txt", GIT_INDEX_STAGE_ANCESTOR))); - cl_assert((entry = git_index_get_bypath(result, "another-new-empty-15.txt", GIT_INDEX_STAGE_OURS)) == NULL); - cl_assert((entry = git_index_get_bypath(result, "another-new-empty-15.txt", GIT_INDEX_STAGE_THEIRS))); - cl_assert(merge_trivial_conflict_entrycount(result) == 2); - - git_index_free(result); -} - diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15 b/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15 deleted file mode 100644 index c71411b5f..000000000 --- a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15 +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 c452c5eb5aacf204fc95a55d1eb9668736fecfb6 Gregory Herrero 1705326305 +0100 push diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15-branch b/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15-branch deleted file mode 100644 index f85a1e96d..000000000 --- a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-15-branch +++ /dev/null @@ -1,2 +0,0 @@ -0000000000000000000000000000000000000000 6706996f054c6af4fec7c77939d00e2f486dab4c Gregory Herrero 1705326302 +0100 push -6706996f054c6af4fec7c77939d00e2f486dab4c c5be2acabac675af81df8bb70400235af2a9c225 Gregory Herrero 1705326412 +0100 push diff --git a/tests/resources/merge-resolve/.gitted/objects/1d/6a96dd04ac7354ae6bb4ba24c514500fd0ec89 b/tests/resources/merge-resolve/.gitted/objects/1d/6a96dd04ac7354ae6bb4ba24c514500fd0ec89 deleted file mode 100644 index ec618090b..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/1d/6a96dd04ac7354ae6bb4ba24c514500fd0ec89 and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/29 b/tests/resources/merge-resolve/.gitted/objects/29 new file mode 100644 index 000000000..966150707 Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/29 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/48/320305de02310b9c4fd744243b9b0d1d5f11af b/tests/resources/merge-resolve/.gitted/objects/48/320305de02310b9c4fd744243b9b0d1d5f11af deleted file mode 100644 index 25236a804..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/48/320305de02310b9c4fd744243b9b0d1d5f11af and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/54/c9d15687fb4f56e08252662962d6d1dbc09d9d b/tests/resources/merge-resolve/.gitted/objects/54/c9d15687fb4f56e08252662962d6d1dbc09d9d new file mode 100644 index 000000000..7e0555b3f --- /dev/null +++ b/tests/resources/merge-resolve/.gitted/objects/54/c9d15687fb4f56e08252662962d6d1dbc09d9d @@ -0,0 +1,3 @@ +xNI +1W]/a&#~(:FQ\A۸Mtr8K0YK&Xkwə"$pPwjv\RhgI=ŘK*SDaM*z68 .^aG?` +q6Y83W^BMiQ \ No newline at end of file diff --git a/tests/resources/merge-resolve/.gitted/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 b/tests/resources/merge-resolve/.gitted/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 new file mode 100644 index 000000000..cfc3920fb Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/60/b12be2d2f57977ce83d8dfd32e2394ac1ba1a2 b/tests/resources/merge-resolve/.gitted/objects/60/b12be2d2f57977ce83d8dfd32e2394ac1ba1a2 new file mode 100644 index 000000000..f53f75e0a Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/60/b12be2d2f57977ce83d8dfd32e2394ac1ba1a2 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/67/06996f054c6af4fec7c77939d00e2f486dab4c b/tests/resources/merge-resolve/.gitted/objects/67/06996f054c6af4fec7c77939d00e2f486dab4c deleted file mode 100644 index 92ddbf0be..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/67/06996f054c6af4fec7c77939d00e2f486dab4c and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11 b/tests/resources/merge-resolve/.gitted/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11 new file mode 100644 index 000000000..dc6cf6493 Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/a6/5140d5ec9f47064f614ecf8e43776baa5c0c11 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/ab/347abd8cda4a0e3b8bb42bb620c0c72c7df779 b/tests/resources/merge-resolve/.gitted/objects/ab/347abd8cda4a0e3b8bb42bb620c0c72c7df779 new file mode 100644 index 000000000..d743a385c Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/ab/347abd8cda4a0e3b8bb42bb620c0c72c7df779 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/bc/114411903fd2afaa4bb9b85ed13f27e37ac375 b/tests/resources/merge-resolve/.gitted/objects/bc/114411903fd2afaa4bb9b85ed13f27e37ac375 new file mode 100644 index 000000000..08941ff95 Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/bc/114411903fd2afaa4bb9b85ed13f27e37ac375 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/c0/d1f321977d1c18e23a28c581fed6d17d0cc013 b/tests/resources/merge-resolve/.gitted/objects/c0/d1f321977d1c18e23a28c581fed6d17d0cc013 deleted file mode 100644 index 4c20a212a..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/c0/d1f321977d1c18e23a28c581fed6d17d0cc013 and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/c4/52c5eb5aacf204fc95a55d1eb9668736fecfb6 b/tests/resources/merge-resolve/.gitted/objects/c4/52c5eb5aacf204fc95a55d1eb9668736fecfb6 deleted file mode 100644 index e199fa491..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/c4/52c5eb5aacf204fc95a55d1eb9668736fecfb6 and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/c5/be2acabac675af81df8bb70400235af2a9c225 b/tests/resources/merge-resolve/.gitted/objects/c5/be2acabac675af81df8bb70400235af2a9c225 deleted file mode 100644 index 848f341c9..000000000 --- a/tests/resources/merge-resolve/.gitted/objects/c5/be2acabac675af81df8bb70400235af2a9c225 +++ /dev/null @@ -1,4 +0,0 @@ -xAj1 @Ѭ} -CyFc(%,g2qno G->_o1P3 -ȒT -Qb*{}xJ@9SBܰ$I)/L 㟱v_n[Ժ`Z_prIC̄@=y;ݎn|;x*wY'IS \ No newline at end of file diff --git a/tests/resources/merge-resolve/.gitted/objects/cd/d1cd02dbd164e9d18a644515bc2ca6551f13b4 b/tests/resources/merge-resolve/.gitted/objects/cd/d1cd02dbd164e9d18a644515bc2ca6551f13b4 deleted file mode 100644 index d2385b8f2..000000000 Binary files a/tests/resources/merge-resolve/.gitted/objects/cd/d1cd02dbd164e9d18a644515bc2ca6551f13b4 and /dev/null differ diff --git a/tests/resources/merge-resolve/.gitted/objects/cd/edf9760406dc79e0c6a8899ce9f180ec2a23a0 b/tests/resources/merge-resolve/.gitted/objects/cd/edf9760406dc79e0c6a8899ce9f180ec2a23a0 new file mode 100644 index 000000000..011b5b3e5 --- /dev/null +++ b/tests/resources/merge-resolve/.gitted/objects/cd/edf9760406dc79e0c6a8899ce9f180ec2a23a0 @@ -0,0 +1,2 @@ +xA +B1C] "n)B[U R^Mo3c:d chCi2FGkKzŖ:ײ<ǝ[Ҏj9 zB0X!58猒E;4~*uQo$D \ No newline at end of file diff --git a/tests/resources/merge-resolve/.gitted/objects/de/06afe070b65f94d7d791c39a6d389c58dda60d b/tests/resources/merge-resolve/.gitted/objects/de/06afe070b65f94d7d791c39a6d389c58dda60d new file mode 100644 index 000000000..28567b624 Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/de/06afe070b65f94d7d791c39a6d389c58dda60d differ diff --git a/tests/resources/merge-resolve/.gitted/objects/e5/0a49f9558d09d4d3bfc108363bb24c127ed263 b/tests/resources/merge-resolve/.gitted/objects/e5/0a49f9558d09d4d3bfc108363bb24c127ed263 new file mode 100644 index 000000000..251c5dfb2 Binary files /dev/null and b/tests/resources/merge-resolve/.gitted/objects/e5/0a49f9558d09d4d3bfc108363bb24c127ed263 differ diff --git a/tests/resources/merge-resolve/.gitted/objects/ea/789495e0a72efadcd0f86a48f4c9ed435bb8a3 b/tests/resources/merge-resolve/.gitted/objects/ea/789495e0a72efadcd0f86a48f4c9ed435bb8a3 new file mode 100644 index 000000000..ed98d7056 --- /dev/null +++ b/tests/resources/merge-resolve/.gitted/objects/ea/789495e0a72efadcd0f86a48f4c9ed435bb8a3 @@ -0,0 +1,3 @@ +xOIj1Y!VA M~:E~&o>Z;uB[JrN9z)Vb!.Rj +: +$ŘK:!c \˃Fキ[?Kby{; pA-wS[_i{WOGR \ No newline at end of file diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames b/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames new file mode 100644 index 000000000..89b4eea8f --- /dev/null +++ b/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames @@ -0,0 +1 @@ +ea789495e0a72efadcd0f86a48f4c9ed435bb8a3 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames-branch b/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames-branch new file mode 100644 index 000000000..1c6a9f4db --- /dev/null +++ b/tests/resources/merge-resolve/.gitted/refs/heads/emptyfile_renames-branch @@ -0,0 +1 @@ +ab347abd8cda4a0e3b8bb42bb620c0c72c7df779 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15 b/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15 deleted file mode 100644 index d6149eb81..000000000 --- a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15 +++ /dev/null @@ -1 +0,0 @@ -c452c5eb5aacf204fc95a55d1eb9668736fecfb6 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15-branch b/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15-branch deleted file mode 100644 index a255d1a3a..000000000 --- a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-15-branch +++ /dev/null @@ -1 +0,0 @@ -c5be2acabac675af81df8bb70400235af2a9c225