@@ -12,6 +12,7 @@ static git_repository *repo;
1212#define SUBMODULE_MAIN_BRANCH "submodules"
1313#define SUBMODULE_OTHER_BRANCH "submodules-branch"
1414#define SUBMODULE_OTHER2_BRANCH "submodules-branch2"
15+ #define SUBMODULE_DELETE_BRANCH "delete-submodule"
1516
1617#define TEST_INDEX_PATH TEST_REPO_PATH "/.git/index"
1718
@@ -93,3 +94,38 @@ void test_merge_workdir_submodules__take_changed(void)
9394 git_reference_free (their_ref );
9495 git_reference_free (our_ref );
9596}
97+
98+
99+ void test_merge_workdir_submodules__update_delete_conflict (void )
100+ {
101+ git_reference * our_ref , * their_ref ;
102+ git_commit * our_commit ;
103+ git_annotated_commit * their_head ;
104+ git_index * index ;
105+
106+ struct merge_index_entry merge_index_entries [] = {
107+ { 0100644 , "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" , 0 , ".gitmodules" },
108+ { 0100644 , "5887a5e516c53bd58efb0f02ec6aa031b6fe9ad7" , 0 , "file1.txt" },
109+ { 0100644 , "4218670ab81cc219a9f94befb5c5dad90ec52648" , 0 , "file2.txt" },
110+ { 0160000 , "d3d806a4bef96889117fd7ebac0e3cb5ec152932" , 1 , "submodule" },
111+ { 0160000 , "297aa6cd028b3336c7802c7a6f49143da4e1602d" , 3 , "submodule" },
112+ };
113+
114+ cl_git_pass (git_reference_lookup (& our_ref , repo , "refs/heads/" SUBMODULE_DELETE_BRANCH ));
115+ cl_git_pass (git_commit_lookup (& our_commit , repo , git_reference_target (our_ref )));
116+ cl_git_pass (git_reset (repo , (git_object * )our_commit , GIT_RESET_HARD , NULL ));
117+
118+ cl_git_pass (git_reference_lookup (& their_ref , repo , "refs/heads/" SUBMODULE_MAIN_BRANCH ));
119+ cl_git_pass (git_annotated_commit_from_ref (& their_head , repo , their_ref ));
120+
121+ cl_git_pass (git_merge (repo , (const git_annotated_commit * * )& their_head , 1 , NULL , NULL ));
122+
123+ cl_git_pass (git_repository_index (& index , repo ));
124+ cl_assert (merge_test_index (index , merge_index_entries , 5 ));
125+
126+ git_index_free (index );
127+ git_annotated_commit_free (their_head );
128+ git_commit_free (our_commit );
129+ git_reference_free (their_ref );
130+ git_reference_free (our_ref );
131+ }
0 commit comments