summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-10-13 12:59:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-10-13 17:18:16 (GMT)
commit80988783c8c417c5e914256b43ed3604cc8fa4c3 (patch)
treee59001bc21004d07a0a9904d2703cf916b98f0af /merge-recursive.c
parent72251b7de6daf2cd7916e3aad46df0047e5a5d2b (diff)
downloadgit-80988783c8c417c5e914256b43ed3604cc8fa4c3.zip
git-80988783c8c417c5e914256b43ed3604cc8fa4c3.tar.gz
git-80988783c8c417c5e914256b43ed3604cc8fa4c3.tar.bz2
submodule: Search for merges only at end of recursive merge
The submodule merge search is not useful during virtual merges because the results cannot be used automatically. Furthermore any suggestions made by the search may apply to commits different than HEAD:sub and MERGE_HEAD:sub, thus confusing the user. Skip searching for submodule merges during a virtual merge such as that between B and C while merging the heads of: B---BC / \ / A X \ / \ C---CB Run the search only when the recursion level is zero (!o->call_depth). This fixes known breakage tested in t7405-submodule-merge. Signed-off-by: Brad King <brad.king@kitware.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index c34a4f1..cc664c3 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -946,8 +946,10 @@ static struct merge_file_info merge_file_1(struct merge_options *o,
free(result_buf.ptr);
result.clean = (merge_status == 0);
} else if (S_ISGITLINK(a->mode)) {
- result.clean = merge_submodule(result.sha, one->path, one->sha1,
- a->sha1, b->sha1);
+ result.clean = merge_submodule(result.sha,
+ one->path, one->sha1,
+ a->sha1, b->sha1,
+ !o->call_depth);
} else if (S_ISLNK(a->mode)) {
hashcpy(result.sha, a->sha1);