gitweb: Always use three argument form of open
[gitweb.git] / merge-recursive.c
index 3e1bc3e07f234089656397361b2b83b59bdc19a7..a3721efcaf9458e5c735b45794d60bac670366d2 100644 (file)
@@ -520,8 +520,12 @@ static void update_file_flags(struct merge_options *o,
                unsigned long size;
 
                if (S_ISGITLINK(mode))
-                       die("cannot read object %s '%s': It is a submodule!",
-                           sha1_to_hex(sha), path);
+                       /*
+                        * We may later decide to recursively descend into
+                        * the submodule directory and update its index
+                        * and/or work tree, but we do not do that now.
+                        */
+                       goto update_index;
 
                buf = read_sha1_file(sha, &type, &size);
                if (!buf)
@@ -1116,21 +1120,13 @@ static int process_entry(struct merge_options *o,
                                 o->branch1, o->branch2);
 
                clean_merge = mfi.clean;
-               if (mfi.clean)
-                       update_file(o, 1, mfi.sha, mfi.mode, path);
-               else if (S_ISGITLINK(mfi.mode))
-                       output(o, 1, "CONFLICT (submodule): Merge conflict in %s "
-                              "- needs %s", path, sha1_to_hex(b.sha1));
-               else {
+               if (!mfi.clean) {
+                       if (S_ISGITLINK(mfi.mode))
+                               reason = "submodule";
                        output(o, 1, "CONFLICT (%s): Merge conflict in %s",
                                        reason, path);
-
-                       if (o->call_depth)
-                               update_file(o, 0, mfi.sha, mfi.mode, path);
-                       else
-                               update_file_flags(o, mfi.sha, mfi.mode, path,
-                                             0 /* update_cache */, 1 /* update_working_directory */);
                }
+               update_file(o, mfi.clean, mfi.sha, mfi.mode, path);
        } else if (!o_sha && !a_sha && !b_sha) {
                /*
                 * this entry was deleted altogether. a_mode == 0 means