Skip to content

Commit c641ca6

Browse files
newrengitster
authored andcommitted
merge-recursive: handle addition of submodule on our side of history
The code for a newly added path assumed that the path was a normal file, and thus checked for there being a directory still being in the way of the file. Note that since unpack_trees() does path-in-the-way checks already, the only way for there to be a directory in the way at this point in the code, is if there is some kind of D/F conflict in the merge. For a submodule addition on HEAD's side of history, the submodule would have already been present. This means that we do expect there to be a directory present but should not consider it to be "in the way"; instead, it's the expected submodule. So, when there's a submodule addition from HEAD's side, don't bother checking the working copy for a directory in the way. Signed-off-by: Elijah Newren <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 89c4ee4 commit c641ca6

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

merge-recursive.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1901,8 +1901,9 @@ static int process_entry(struct merge_options *o,
19011901
oid = b_oid;
19021902
conf = _("directory/file");
19031903
}
1904-
if (dir_in_way(path, !o->call_depth,
1905-
S_ISGITLINK(a_mode))) {
1904+
if (dir_in_way(path,
1905+
!o->call_depth && !S_ISGITLINK(a_mode),
1906+
0)) {
19061907
char *new_path = unique_path(o, path, add_branch);
19071908
clean_merge = 0;
19081909
output(o, 1, _("CONFLICT (%s): There is a directory with name %s in %s. "

t/t3512-cherry-pick-submodule.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
1010
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
1111
test_submodule_switch "git cherry-pick"
1212

13-
test_expect_failure 'unrelated submodule/file conflict is ignored' '
13+
test_expect_success 'unrelated submodule/file conflict is ignored' '
1414
test_create_repo sub &&
1515
1616
touch sub/file &&

0 commit comments

Comments
 (0)