summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2017-11-14 17:31:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-11-15 03:42:34 (GMT)
commitc641ca67072946f95f87e7b21f13f3d4e73701e3 (patch)
treef8005b79d1dd6cb8e7359a08ae83bfca83c8654c /merge-recursive.c
parent89c4ee4e74269635e69c84800ece0f8b754636f6 (diff)
downloadgit-c641ca67072946f95f87e7b21f13f3d4e73701e3.zip
git-c641ca67072946f95f87e7b21f13f3d4e73701e3.tar.gz
git-c641ca67072946f95f87e7b21f13f3d4e73701e3.tar.bz2
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 <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 1d3f8f0..9fb0b9f 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1901,8 +1901,9 @@ static int process_entry(struct merge_options *o,
oid = b_oid;
conf = _("directory/file");
}
- if (dir_in_way(path, !o->call_depth,
- S_ISGITLINK(a_mode))) {
+ if (dir_in_way(path,
+ !o->call_depth && !S_ISGITLINK(a_mode),
+ 0)) {
char *new_path = unique_path(o, path, add_branch);
clean_merge = 0;
output(o, 1, _("CONFLICT (%s): There is a directory with name %s in %s. "