merge-recursive: tweak magic band-aid
[gitweb.git] / merge-recursive.c
index 847bc8494ff1e7610b6dbb76c9c368efdf903ccd..59482ffc87f7ae0b2004e3f1bbb467d199a3bcde 100644 (file)
@@ -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*/);