usage.c: detect recursion in die routines and bail out immediately
[gitweb.git] / builtin / merge.c
index 20aeca0b3c29f3c1c0e037b25f630eb0d9bbf34e..e81fde6d79e8896235c4a3901bc303f6094a9e55 100644 (file)
@@ -399,11 +399,12 @@ static void finish(struct commit *head_commit,
        if (new_head && show_diffstat) {
                struct diff_options opts;
                diff_setup(&opts);
+               opts.stat_width = -1; /* use full terminal width */
+               opts.stat_graph_width = -1; /* respect statGraphWidth config */
                opts.output_format |=
                        DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT;
                opts.detect_rename = DIFF_DETECT_RENAME;
-               if (diff_setup_done(&opts) < 0)
-                       die(_("diff_setup_done failed"));
+               diff_setup_done(&opts);
                diff_tree_sha1(head, new_head, "", &opts);
                diffcore_std(&opts);
                diff_flush(&opts);
@@ -904,12 +905,12 @@ static void prepare_to_commit(struct commit_list *remoteheads)
        write_merge_msg(&msg);
        run_hook(get_index_file(), "prepare-commit-msg",
                 git_path("MERGE_MSG"), "merge", NULL, NULL);
-       if (option_edit) {
+       if (0 < option_edit) {
                if (launch_editor(git_path("MERGE_MSG"), NULL, NULL))
                        abort_commit(remoteheads, NULL);
        }
        read_merge_msg(&msg);
-       stripspace(&msg, option_edit);
+       stripspace(&msg, 0 < option_edit);
        if (!msg.len)
                abort_commit(remoteheads, _("Empty commit message."));
        strbuf_release(&merge_msg);
@@ -1349,15 +1350,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                if (!fast_forward_only &&
                    merge_remote_util(commit) &&
                    merge_remote_util(commit)->obj &&
-                   merge_remote_util(commit)->obj->type == OBJ_TAG) {
-                       if (option_edit < 0)
-                               option_edit = default_edit_option();
+                   merge_remote_util(commit)->obj->type == OBJ_TAG)
                        allow_fast_forward = 0;
-               }
        }
 
        if (option_edit < 0)
-               option_edit = 0;
+               option_edit = default_edit_option();
 
        if (!use_strategies) {
                if (!remoteheads)
@@ -1448,7 +1446,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                refresh_cache(REFRESH_QUIET);
                if (allow_trivial && !fast_forward_only) {
                        /* See if it is really trivial. */
-                       git_committer_info(IDENT_ERROR_ON_NO_NAME);
+                       git_committer_info(IDENT_STRICT);
                        printf(_("Trying really trivial in-index merge...\n"));
                        if (!read_tree_trivial(common->item->object.sha1,
                                               head_commit->object.sha1,
@@ -1491,7 +1489,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                die(_("Not possible to fast-forward, aborting."));
 
        /* We are going to make a new commit. */
-       git_committer_info(IDENT_ERROR_ON_NO_NAME);
+       git_committer_info(IDENT_STRICT);
 
        /*
         * At this point, we need a real merge.  No matter what strategy