From b9b3eef76186d423efb684d01b3e99ef010a61de Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 17 Mar 2011 22:22:06 -0700 Subject: [PATCH] merge-recursive: tweak magic band-aid Running checks against working tree (e.g. lstat()) and causing changes to working tree (e.g. unlink()) while building a virtual ancestor merge does not make any sense. Avoid doing so. This is not a real fix; it is another magic band-aid on top of another band-aid we placed earlier. Signed-off-by: Junio C Hamano --- merge-recursive.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/merge-recursive.c b/merge-recursive.c index 847bc8494..59482ffc8 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -370,6 +370,13 @@ static void make_room_for_directories_of_df_conflicts(struct merge_options *o, struct stage_data *last_e; int i; + /* + * Do not do any of this crazyness during the recursive; we don't + * even write anything to the working tree! + */ + if (o->call_depth) + return; + for (i = 0; i < entries->nr; i++) { const char *path = entries->items[i].string; int len = strlen(path); @@ -1274,7 +1281,7 @@ static int merge_content(struct merge_options *o, if (mfi.clean && !df_conflict_remains && sha_eq(mfi.sha, a_sha) && mfi.mode == a.mode && - lstat(path, &st) == 0) { + !o->call_depth && !lstat(path, &st)) { output(o, 3, "Skipped %s (merged same as existing)", path); add_cacheinfo(mfi.mode, mfi.sha, path, 0 /*stage*/, 1 /*refresh*/, 0 /*options*/); -- 2.30.2