From 0ef19fe14ce5a5f7b5ac90966a56997bf04ea5a9 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Mon, 20 Jan 2014 17:13:55 -0500 Subject: [PATCH] Merge submodules --- src/checkout.c | 21 +++- src/merge.c | 14 ++- tests/merge/workdir/submodules.c | 101 ++++++++++++++++++ tests/resources/merge-resolve/.gitted/config | Bin 111 -> 155 bytes .../.gitted/modules/submodule/HEAD | Bin 0 -> 23 bytes .../.gitted/modules/submodule/ORIG_HEAD | Bin 0 -> 41 bytes .../.gitted/modules/submodule/config | Bin 0 -> 348 bytes .../.gitted/modules/submodule/index | Bin 0 -> 153 bytes .../.gitted/modules/submodule/info/exclude | Bin 0 -> 240 bytes .../18/fae1354bba0a5f1e6a531f9988369142c24a9e | Bin 0 -> 54 bytes .../29/7aa6cd028b3336c7802c7a6f49143da4e1602d | Bin 0 -> 161 bytes .../38/6c80dc813b89d719797668f40c1be0a6efa996 | Bin 0 -> 32 bytes .../ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 | Bin 0 -> 64 bytes .../ad/16e0a7684ea95bf892980a2ee412293ae979cc | Bin 0 -> 64 bytes .../ae/39c77c70cb6bad18bb471912460c4e1ba0f586 | Bin 0 -> 160 bytes .../c2/0765f6e24e8bbb63a648d0d11d84da63170190 | Bin 0 -> 52 bytes .../d3/d806a4bef96889117fd7ebac0e3cb5ec152932 | Bin 0 -> 139 bytes .../f1/065ff5593604072837fecaad3e2e268cb0147b | Bin 0 -> 64 bytes .../.gitted/modules/submodule/packed-refs | Bin 0 -> 172 bytes .../modules/submodule/refs/heads/master | Bin 0 -> 41 bytes .../submodule/refs/remotes/origin/HEAD | Bin 0 -> 32 bytes .../0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 | Bin 0 -> 47 bytes .../27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 | Bin 0 -> 24 bytes .../2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a | Bin 0 -> 231 bytes .../42/18670ab81cc219a9f94befb5c5dad90ec52648 | Bin 0 -> 47 bytes .../49/fd9edac79d15c8fbfca2d481cbb900beba22a6 | Bin 0 -> 118 bytes .../58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 | Bin 0 -> 47 bytes .../60/61fe116ecba0800c26113ea1a7dfac2e16eeaf | Bin 0 -> 87 bytes .../62/33c6a0670228627f93c01cef32485a30403670 | Bin 0 -> 44 bytes .../67/110d77886b2af6309b9212961e72b8583e5fa9 | Bin 0 -> 199 bytes .../72/cdb057b340205164478565e91eb71647e66891 | Bin 0 -> 65 bytes .../7a/f14d9c679baaef35555095f4f5d33e9a569ab9 | Bin 0 -> 149 bytes .../7c/04ca611203ed320c5f495b9813054dd23be3be | Bin 0 -> 161 bytes .../81/1c70fcb6d5bbd022d04cc31836d30b436f9551 | Bin 0 -> 169 bytes .../8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a | Bin 0 -> 82 bytes .../91/f44111cb1cb1358ac6944ad356ca1738813ea1 | Bin 0 -> 149 bytes .../96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 | Bin 0 -> 149 bytes .../ad/26b598134264fd284292cb233fc0b2f25851da | Bin 0 -> 43 bytes .../ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 | Bin 0 -> 54 bytes .../d3/3cedf513c059e0515653fa2c2e386631387a05 | Bin 0 -> 46 bytes .../d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 | Bin 0 -> 164 bytes .../dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd | Bin 0 -> 149 bytes .../e5/060729746ca9888239cba08fdcf4bee907b406 | Bin 0 -> 24 bytes .../f2/e1550a0c9e53d5811175864a29536642ae3821 | Bin 0 -> 73 bytes .../f6/65b45cde9b568009c6e6b7b568e89cfe717df8 | Bin 0 -> 132 bytes .../.gitted/refs/heads/submodules | Bin 0 -> 41 bytes .../.gitted/refs/heads/submodules-branch | Bin 0 -> 41 bytes .../.gitted/refs/heads/submodules-branch2 | Bin 0 -> 41 bytes 48 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 tests/merge/workdir/submodules.c create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/HEAD create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/config create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/index create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/18/fae1354bba0a5f1e6a531f9988369142c24a9e create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/ad/16e0a7684ea95bf892980a2ee412293ae979cc create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/ae/39c77c70cb6bad18bb471912460c4e1ba0f586 create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/c2/0765f6e24e8bbb63a648d0d11d84da63170190 create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/d3/d806a4bef96889117fd7ebac0e3cb5ec152932 create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/packed-refs create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master create mode 100644 tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD create mode 100644 tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 create mode 100644 tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 create mode 100644 tests/resources/merge-resolve/.gitted/objects/2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a create mode 100644 tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 create mode 100644 tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 create mode 100644 tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 create mode 100644 tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf create mode 100644 tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 create mode 100644 tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 create mode 100644 tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 create mode 100644 tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 create mode 100644 tests/resources/merge-resolve/.gitted/objects/7c/04ca611203ed320c5f495b9813054dd23be3be create mode 100644 tests/resources/merge-resolve/.gitted/objects/81/1c70fcb6d5bbd022d04cc31836d30b436f9551 create mode 100644 tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a create mode 100644 tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 create mode 100644 tests/resources/merge-resolve/.gitted/objects/96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 create mode 100644 tests/resources/merge-resolve/.gitted/objects/ad/26b598134264fd284292cb233fc0b2f25851da create mode 100644 tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 create mode 100644 tests/resources/merge-resolve/.gitted/objects/d3/3cedf513c059e0515653fa2c2e386631387a05 create mode 100644 tests/resources/merge-resolve/.gitted/objects/d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 create mode 100644 tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd create mode 100644 tests/resources/merge-resolve/.gitted/objects/e5/060729746ca9888239cba08fdcf4bee907b406 create mode 100644 tests/resources/merge-resolve/.gitted/objects/f2/e1550a0c9e53d5811175864a29536642ae3821 create mode 100644 tests/resources/merge-resolve/.gitted/objects/f6/65b45cde9b568009c6e6b7b568e89cfe717df8 create mode 100644 tests/resources/merge-resolve/.gitted/refs/heads/submodules create mode 100644 tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch create mode 100644 tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 diff --git a/src/checkout.c b/src/checkout.c index 960bc6140..cfb0e72ab 100644 --- a/src/checkout.c +++ b/src/checkout.c @@ -71,7 +71,8 @@ typedef struct { int name_collision:1, directoryfile:1, one_to_two:1, - binary:1; + binary:1, + submodule:1; } checkout_conflictdata; static int checkout_notify( @@ -682,11 +683,22 @@ GIT_INLINE(bool) conflict_pathspec_match( return false; } +GIT_INLINE(int) checkout_conflict_detect_submodule(checkout_conflictdata *conflict) +{ + conflict->submodule = ((conflict->ancestor && S_ISGITLINK(conflict->ancestor->mode)) || + (conflict->ours && S_ISGITLINK(conflict->ours->mode)) || + (conflict->theirs && S_ISGITLINK(conflict->theirs->mode))); + return 0; +} + GIT_INLINE(int) checkout_conflict_detect_binary(git_repository *repo, checkout_conflictdata *conflict) { git_blob *ancestor_blob = NULL, *our_blob = NULL, *their_blob = NULL; int error = 0; + if (conflict->submodule) + return 0; + if (conflict->ancestor) { if ((error = git_blob_lookup(&ancestor_blob, repo, &conflict->ancestor->oid)) < 0) goto done; @@ -740,7 +752,8 @@ static int checkout_conflicts_load(checkout_data *data, git_iterator *workdir, g conflict->ours = ours; conflict->theirs = theirs; - if ((error = checkout_conflict_detect_binary(data->repo, conflict)) < 0) + if ((error = checkout_conflict_detect_submodule(conflict)) < 0 || + (error = checkout_conflict_detect_binary(data->repo, conflict)) < 0) goto done; git_vector_insert(&data->conflicts, conflict); @@ -1791,6 +1804,10 @@ static int checkout_create_conflicts(checkout_data *data) else if (S_ISLNK(conflict->theirs->mode)) error = checkout_write_entry(data, conflict, conflict->ours); + /* If any side is a gitlink, do nothing. */ + else if (conflict->submodule) + error = 0; + /* If any side is binary, write the ours side */ else if (conflict->binary) error = checkout_write_entry(data, conflict, conflict->ours); diff --git a/src/merge.c b/src/merge.c index 04c74212a..2fb1c5898 100644 --- a/src/merge.c +++ b/src/merge.c @@ -42,6 +42,7 @@ #include "git2/sys/index.h" #define GIT_MERGE_INDEX_ENTRY_EXISTS(X) ((X).mode != 0) +#define GIT_MERGE_INDEX_ENTRY_ISFILE(X) S_ISREG((X).mode) typedef enum { TREE_IDX_ANCESTOR = 0, @@ -447,7 +448,6 @@ static int merge_conflict_resolve_one_removed( return error; } - static int merge_conflict_resolve_one_renamed( int *resolved, git_merge_diff_list *diff_list, @@ -533,6 +533,12 @@ static int merge_conflict_resolve_automerge( if (conflict->type == GIT_MERGE_DIFF_DIRECTORY_FILE) return 0; + /* Reject submodules. */ + if (S_ISGITLINK(conflict->ancestor_entry.mode) || + S_ISGITLINK(conflict->our_entry.mode) || + S_ISGITLINK(conflict->their_entry.mode)) + return 0; + /* Reject link/file conflicts. */ if ((S_ISLNK(conflict->ancestor_entry.mode) ^ S_ISLNK(conflict->our_entry.mode)) || (S_ISLNK(conflict->ancestor_entry.mode) ^ S_ISLNK(conflict->their_entry.mode))) @@ -1156,7 +1162,7 @@ GIT_INLINE(int) merge_diff_detect_binary( git_blob *ancestor_blob = NULL, *our_blob = NULL, *their_blob = NULL; int error = 0; - if (GIT_MERGE_INDEX_ENTRY_EXISTS(conflict->ancestor_entry)) { + if (GIT_MERGE_INDEX_ENTRY_ISFILE(conflict->ancestor_entry)) { if ((error = git_blob_lookup(&ancestor_blob, repo, &conflict->ancestor_entry.oid)) < 0) goto done; @@ -1164,7 +1170,7 @@ GIT_INLINE(int) merge_diff_detect_binary( } if (!conflict->binary && - GIT_MERGE_INDEX_ENTRY_EXISTS(conflict->our_entry)) { + GIT_MERGE_INDEX_ENTRY_ISFILE(conflict->our_entry)) { if ((error = git_blob_lookup(&our_blob, repo, &conflict->our_entry.oid)) < 0) goto done; @@ -1172,7 +1178,7 @@ GIT_INLINE(int) merge_diff_detect_binary( } if (!conflict->binary && - GIT_MERGE_INDEX_ENTRY_EXISTS(conflict->their_entry)) { + GIT_MERGE_INDEX_ENTRY_ISFILE(conflict->their_entry)) { if ((error = git_blob_lookup(&their_blob, repo, &conflict->their_entry.oid)) < 0) goto done; diff --git a/tests/merge/workdir/submodules.c b/tests/merge/workdir/submodules.c new file mode 100644 index 000000000..f01faac43 --- /dev/null +++ b/tests/merge/workdir/submodules.c @@ -0,0 +1,101 @@ +#include "clar_libgit2.h" +#include "git2/repository.h" +#include "git2/merge.h" +#include "buffer.h" +#include "merge.h" +#include "../merge_helpers.h" + +static git_repository *repo; + +#define TEST_REPO_PATH "merge-resolve" + +#define SUBMODULE_MAIN_BRANCH "submodules" +#define SUBMODULE_OTHER_BRANCH "submodules-branch" +#define SUBMODULE_OTHER2_BRANCH "submodules-branch2" + +#define TEST_INDEX_PATH TEST_REPO_PATH "/.git/index" + +// Fixture setup and teardown +void test_merge_workdir_submodules__initialize(void) +{ + repo = cl_git_sandbox_init(TEST_REPO_PATH); +} + +void test_merge_workdir_submodules__cleanup(void) +{ + cl_git_sandbox_cleanup(); +} + +void test_merge_workdir_submodules__automerge(void) +{ + git_reference *our_ref, *their_ref; + git_commit *our_commit; + git_merge_head *their_head; + git_merge_result *result; + git_merge_opts opts = GIT_MERGE_OPTS_INIT; + git_index *index; + + struct merge_index_entry merge_index_entries[] = { + { 0100644, "caff6b7d44973f53e3e0cf31d0d695188b19aec6", 0, ".gitmodules" }, + { 0100644, "950a663a6a7b2609eed1ed1ba9f41eb1a3192a9f", 0, "file1.txt" }, + { 0100644, "343e660b9cb4bee5f407c2e33fcb9df24d9407a4", 0, "file2.txt" }, + { 0160000, "d3d806a4bef96889117fd7ebac0e3cb5ec152932", 1, "submodule" }, + { 0160000, "297aa6cd028b3336c7802c7a6f49143da4e1602d", 2, "submodule" }, + { 0160000, "ae39c77c70cb6bad18bb471912460c4e1ba0f586", 3, "submodule" }, + }; + + cl_git_pass(git_reference_lookup(&our_ref, repo, "refs/heads/" SUBMODULE_MAIN_BRANCH)); + cl_git_pass(git_commit_lookup(&our_commit, repo, git_reference_target(our_ref))); + cl_git_pass(git_reset(repo, (git_object *)our_commit, GIT_RESET_HARD)); + + cl_git_pass(git_reference_lookup(&their_ref, repo, "refs/heads/" SUBMODULE_OTHER_BRANCH)); + cl_git_pass(git_merge_head_from_ref(&their_head, repo, their_ref)); + + cl_git_pass(git_merge(&result, repo, (const git_merge_head **)&their_head, 1, &opts)); + + cl_git_pass(git_repository_index(&index, repo)); + cl_assert(merge_test_index(index, merge_index_entries, 6)); + + git_index_free(index); + git_merge_result_free(result); + git_merge_head_free(their_head); + git_commit_free(our_commit); + git_reference_free(their_ref); + git_reference_free(our_ref); +} + +void test_merge_workdir_submodules__take_changed(void) +{ + git_reference *our_ref, *their_ref; + git_commit *our_commit; + git_merge_head *their_head; + git_merge_result *result; + git_merge_opts opts = GIT_MERGE_OPTS_INIT; + git_index *index; + + struct merge_index_entry merge_index_entries[] = { + { 0100644, "caff6b7d44973f53e3e0cf31d0d695188b19aec6", 0, ".gitmodules" }, + { 0100644, "b438ff23300b2e0f80b84a6f30140dfa91e71423", 0, "file1.txt" }, + { 0100644, "f27fbafdfa6693f8f7a5128506fe3e338dbfcad2", 0, "file2.txt" }, + { 0160000, "297aa6cd028b3336c7802c7a6f49143da4e1602d", 0, "submodule" }, + }; + + cl_git_pass(git_reference_lookup(&our_ref, repo, "refs/heads/" SUBMODULE_MAIN_BRANCH)); + cl_git_pass(git_commit_lookup(&our_commit, repo, git_reference_target(our_ref))); + cl_git_pass(git_reset(repo, (git_object *)our_commit, GIT_RESET_HARD)); + + cl_git_pass(git_reference_lookup(&their_ref, repo, "refs/heads/" SUBMODULE_OTHER2_BRANCH)); + cl_git_pass(git_merge_head_from_ref(&their_head, repo, their_ref)); + + cl_git_pass(git_merge(&result, repo, (const git_merge_head **)&their_head, 1, &opts)); + + cl_git_pass(git_repository_index(&index, repo)); + cl_assert(merge_test_index(index, merge_index_entries, 4)); + + git_index_free(index); + git_merge_result_free(result); + git_merge_head_free(their_head); + git_commit_free(our_commit); + git_reference_free(their_ref); + git_reference_free(our_ref); +} diff --git a/tests/resources/merge-resolve/.gitted/config b/tests/resources/merge-resolve/.gitted/config index af107929f2da5ebccf17f97084f24e4ae204b18f..26c48426d92b1b63be01f9059ac35f82309f6585 100644 GIT binary patch delta 50 rcmd0w%{U=nC%U*aDK|f*G$&O-3C>iC<>D+Y%2BXY(9_e0i*f+~%W)Aq delta 5 McmbQum_H#O00ry<3jhEB diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/HEAD b/tests/resources/merge-resolve/.gitted/modules/submodule/HEAD new file mode 100644 index 0000000000000000000000000000000000000000..cb089cd89a7d7686d284d8761201649346b5aa1c GIT binary patch literal 23 ecmXR)O|w!cN=+-)&qz&7Db~+TEG|hc;sO9;xClW2 literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD b/tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD new file mode 100644 index 0000000000000000000000000000000000000000..d1bfcf0f4bdee9c3d528b51e24808f52f54e2d4b GIT binary patch literal 41 ucmV~$K>+|D2m`>sX+RM$4x89Nf_K&HFoGe3qpl`kp+~2=&{|RQcKZ1B&kG^| literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/config b/tests/resources/merge-resolve/.gitted/modules/submodule/config new file mode 100644 index 0000000000000000000000000000000000000000..575cc8599555ef188eb24b04bc0fc22a3690d029 GIT binary patch literal 348 zcmYk1!D_=W42I9~Q-mBlsCzE-Hn!uS>=t@(5+yOUtsu!8dHcz84*_Ek{`~#F`Vk2p zrXkpny&&x~QgreI#2!<7YcHmmeSnA)=rp^)V4A_vVG6jo5D4bHO-_K76UvJHB0Ytm zpy#u#hx4GW9Q2v@7<_sb{^j*c(mtc(@})XfKfyc7hju97g!1X-D}~+kq^$(n4#_V* zb-G5Tpv-u+-w-#wSng#pdkCFD##Ny=?aOurH?cik|A*>hTYdIq`hi?hx{Hnls3g2H RZ*7H46M>e}_Moe@`2&eXb^8DS literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/index b/tests/resources/merge-resolve/.gitted/modules/submodule/index new file mode 100644 index 0000000000000000000000000000000000000000..e948afb27f73293d4323c643da10838a3efc83bf GIT binary patch literal 153 zcmZ?q402{*U|<4b#-O`A3xG63&|O|@5RCwhOAu@ZjYI6I-yZpO?@nIkap9tD%dKQ_ z#t96<#idEP`6;D2sk&*IIjM$vB^4!5O(8+9u0WefrL8O|CP__jfonrR@v`0KF(KYybcN literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude b/tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude new file mode 100644 index 0000000000000000000000000000000000000000..a5196d1be8fb59edf8062bef36d3a602e0812139 GIT binary patch literal 240 zcmXYqK?=e!6h!x)VxWtv*mf_t5?px$aS_{}Hj?C*G9a%9D~+ KF%0z+_-g=4j1?pR literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d b/tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d new file mode 100644 index 0000000000000000000000000000000000000000..aa9fc50069e2fd15b708772e9e582b3f889ac548 GIT binary patch literal 161 zcmV;S0ABxi0i}-14Z<)G1v$HlZ2;s?;&>&5xX=L&tk-KL2gk@UqJ2ya+@3~yqv2Z0 z*1P-YF884a^A0{E3V-9FBXtE-cu@)T(F37B2)MW3FTngIL6eXh%0gYL5S|k!{ zaU5r1Gmn>5^zLhI@JJtO37%^$N8RBngZ|dNY~1QmbH8vcH!u#hHNja2XC1UwgO1QH Pe<)O;V+hn2;s{H@yd_0K literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 b/tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 new file mode 100644 index 0000000000000000000000000000000000000000..bc9a32ebc1e915a4dfe63bb48229764bd5175666 GIT binary patch literal 32 ocmb4XD~D{Ff%bxC@xLP%}*)KN!3lu%t4XD~D{Ff%bxC@xLP%}*)KN!3lu%t%_zh9T>L#URG^U2E|6@(wSLduxxW zE#hGg5nT;gS!_Zr%VG1l`vK~i?b3#ue+X>^qp%)Q$hL5^vfk*mqN$^@U@4CTNn*FVN tUSrW+=X!~nZ$Q1rj$G#m&gc+Lvn^cZj|=lWLe_M=1?IJZ%on%FL7Q7%MYaF{ literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b b/tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b new file mode 100644 index 0000000000000000000000000000000000000000..e0d73e1c25e0c64063fda9c00dc5d700ddac53a1 GIT binary patch literal 64 zcmV-G0Kflu0V^p=O;s>4XD~D{Ff%bxC@xLP%}*)KN!3lu%tAc%>-?OzVWoCz?MOowL_sSIOvNSU dh%P%H!OAyavg19$-=kf;?&Vsv=SrJQ-3R}-Hvj+t literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master b/tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master new file mode 100644 index 0000000000000000000000000000000000000000..fe282569bc00140104ac9c19122f5cdc118aa29c GIT binary patch literal 41 vcmV~$!4Uu;2m`Rc(;(#vjDw*2k6@zdRqPRs1Ay%z+FpE?+c0H!Q*_n`<2nkG literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD b/tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD new file mode 100644 index 0000000000000000000000000000000000000000..6efe28fff834a94fbc20cac51fe9cd65ecc78d43 GIT binary patch literal 32 ncmXR)O|w!cN=+-)FG|hLFG(%d&o9bM&&<=$O)M@+E#d+I#g+^5 literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 b/tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 new file mode 100644 index 0000000000000000000000000000000000000000..d0ca42dad7b53640ac20fa65564d82fc3825a18a GIT binary patch literal 47 zcmV+~0MP$<0ZYosPf{>9Wk}1+Nj2mmnzUBP%}>cp%S=sC$jnnnDoV^t&M<;%2LL}o F8Z!RK6Y&55 literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 b/tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 new file mode 100644 index 0000000000000000000000000000000000000000..c7afad2a8a3ecbc7ea2f17624e63740190d179c1 GIT binary patch literal 24 gcmb5H(@X|FfcPQQAkWlNlnqs%+t+HEG|hc(krPbVNkZ=lsq}( ztss|o{^xvCt2f<+Chaigr6u{fsYU6jiAg!BV8x#vhH~-D3%=SYSlZ^L8Jy;{&O#BY zI5{IRFCAifQc+@Fat2s~-v*y~l`s0!94^Rz-4wHE8GFhnF-#3e&Jnz~nqkxBWnUMw zTXw8r<9lbKwSnU@YWyXfqO@XZbifhq2-sW0WWi@86`mk_ZFm3x literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 b/tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 new file mode 100644 index 0000000000000000000000000000000000000000..33ead6112c06f03417afcaf5cd3395881d030b22 GIT binary patch literal 47 zcmV+~0MP$<0ZYosPg1b7U`Wf%Nj2gElhz8k`6-!cnW-rXnRyDiiNz(UMGzT^NB||a FA)F696pR1> literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 b/tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 new file mode 100644 index 0000000000000000000000000000000000000000..d808d9fd962a6eea21440455111944ec67e9d1b6 GIT binary patch literal 118 zcmV-+0Ez#20acB`3c@fDL_Oy#<`=x^#R`Ij{>EmzHGyOUNsfNJ(M4$AWezjU^Qm~8 zub0!!z%oCcu7}vL#UvQXf%GLSq9Rl4QbD@HS5gk{Z6HhiZn)%JbPQNpFSQ+?X!N?J Y$lXoGvEP~O{%10&yBmM;2WlNYBcI_rh5!Hn literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 b/tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 new file mode 100644 index 0000000000000000000000000000000000000000..550d288d490bac0c1eac2f66889f86ad6c75e727 GIT binary patch literal 47 zcmV+~0MP$<0ZYosPf{>9VMxo&Nj2mGlhz8k`6-!cnW-rXnRyDiiNz(UMGzUHNB~Tw F8Xf5j6FL9@ literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf b/tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf new file mode 100644 index 0000000000000000000000000000000000000000..3f266f6df1e18d53bc4d5f16806b0f8562c75860 GIT binary patch literal 87 zcmV-d0I2_X0ZYosPf{>6FlMlU00j?MM;ETV)N+N)JOvZ38VFFxO)W}KO;JeB&&|!x tQ%KB9PAx9UFDmA;g#fq)-J~L*WCoWV1SpggWtL?o=IENhBmkZZBQoJfB8C6} literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 b/tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 new file mode 100644 index 0000000000000000000000000000000000000000..81428dd624dcd92238baa975efaee668a8e7c75c GIT binary patch literal 44 zcmV+{0Mq|?0ZYosPg1ZnV@S))Nj2i4fV5UfP01`tO;O0qQ%EXG%uCKdF%1BtO(3ei CXA;~1 literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 b/tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 new file mode 100644 index 0000000000000000000000000000000000000000..877bad70339dcdf603f2d08c46f447c22243df24 GIT binary patch literal 199 zcmV;&067160i};UP6aUxgsJxw?p_6QoPP-+8cI4YU?&dyifm9`5Z7lB;sjJP`ZP1r zl+pWj0p)PFrYexMTB8~XC9vjf8`;`4X>yzt1II{>iMJ1)dMuFYv!&!)iA`N$lS-+= z(vV{FHKc6NI8T51SR`20vlWd+VaFmVidFBNB#&e=dQZ6V=i0}Fm-@xC!rMOjZ5;5Z zC;f5H{aWU@jkX@j=ucp5Mw7Eo0q!v&ZYMpDE&a#D_Nwz;K_(w%hs&>Cwr`e}UfrN6 BVbcHr literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 b/tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 new file mode 100644 index 0000000000000000000000000000000000000000..84aa8336bdaf70ce14148fac316d541aa5861f19 GIT binary patch literal 65 zcmV-H0KWft0ZYosPg1ZjVJOMSELKR%%t=)M(#aW#dFiPs3YmEdxrxOksYMEjc_|7> XMTvRI8CMc literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 b/tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 new file mode 100644 index 0000000000000000000000000000000000000000..b4c4ef734ec6e6e1d6418f12fb3dc383f053c0d4 GIT binary patch literal 149 zcmV;G0BZku0V^p=O;s>7HDE9_FfcPQQP4}zEXmDJDa}bOW;pdfyVhm8eemN4=M67h zn<~*Qx$YQLSz2aJs-a#r2nze9gRMCKGEZ zuMV@Zr`|-sbDnIX=sX2x$p(isVYV5QF+z-vIFNdCldVH`4ui#*gaW!n>roXK{1IfK zn8i;%PZ2**wKd~i*xKIH!V6WFoBpf5h5$)sDfHa4hcX%2q zIWG-HB~Ps~gTtg0B2qXawe@72Qa(y;$m1lfMadq;$5&n(Bx7_?nj*WPjU5I@hE14` z!PZgY38$E>@Ozs}g-87Q8sRmUyp(MiH$$j?rCIy{ag0vwTnJ3h literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a b/tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a new file mode 100644 index 0000000000000000000000000000000000000000..790750c0ff9a54e21953ac1fecb6cd7493827d5f GIT binary patch literal 82 zcmV-Y0ImOc0ZYosPf{>6GGMTQ00j?MM;ES=jLc$%w9K4T1t6WAk(igBnxc@Ir;wXi oT#{O(keHXEkW`eImz=?63jsKFK$L-XKs0mNK>*AE04{GS3e5!~`2YX_ literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 b/tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 new file mode 100644 index 0000000000000000000000000000000000000000..51a456f423ecae3dca3e68ad4333f88dc47e2323 GIT binary patch literal 149 zcmV;G0BZku0V^p=O;s>7HDE9_FfcPQQP4}zEXmDJDa}bOW;pdfyVhm8eemN4=M67h zn<~*Qx$YQLSz2aJs-a#7HDE9_FfcPQQP4}zEXmDJDa}bOW;pdfyVhm8eemN4=M67h zn<~*Qx$YQLSz2aJs-a#a1HPtzw#6SstU_@319^bI_5CfGyE>x}og2TTkvog}pZlWh_T literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 b/tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 new file mode 100644 index 0000000000000000000000000000000000000000..6d0f60077b48095f6782de06288b43413624c496 GIT binary patch literal 54 zcmbY;PmHm#v~vUScw{J;XBdpzmsx||J*POiK&{om z7ZpyUBl2JqM4xpL20(*BrBEv$iWgBT5zyO$!f5u69k;=YwI*o;8ACGG3lYGgP3{2n z0SY?la`7yF#!8((@;CO(Un{kpHh#rvk9BVqI_*@(1*qM)R6#7#8>jeL%q*LB9v%2c Sf;}nMQX!5?8~XvTElv*Nf=A5& literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd b/tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd new file mode 100644 index 0000000000000000000000000000000000000000..55626a57b14e389308c1fa035a5276e35efd7d94 GIT binary patch literal 149 zcmV;G0BZku0V^p=O;s>7HDE9_FfcPQQP4}zEXmDJDa}bOW;pdfyVhm8eemN4=M67h zn<~*Qx$YQLSz2aJs-a#4HDoBs$ShV!%gjkt0Mf}BiFxU%DGHf+3b~2JC8~Lu`san0TVlFBvMOh5Z|Y~f$em|UD8@h z2N%afZz90#Nsyj?41zd$qB90RAR{pfrI@WG&TQ!27j1Ck4>g9zqIJ_1X4&nJuC=75 mo92E>S})*+$$A&V;NWPZwPv^bxXT|2b6-m@^fF(oVLt-Rx;&Hs literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/submodules b/tests/resources/merge-resolve/.gitted/refs/heads/submodules new file mode 100644 index 0000000000000000000000000000000000000000..e5511eca95a3563327536a9c6c7cced811a9b7f5 GIT binary patch literal 41 tcmV~$$pHW$2m`Rc)1aL5Kn4&hlrqLXcbpIHpbEGE literal 0 HcmV?d00001 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 b/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 new file mode 100644 index 0000000000000000000000000000000000000000..ced60d8135f743d811782bce9ef926f1cccfcda7 GIT binary patch literal 41 ucmXp{HZVy}G&3|bGB8d}F*Y(tHcd0JG)=O!Ff=wWHAzV^GEPbbA}#>m5DK;c literal 0 HcmV?d00001