advice.con commit Be more user-friendly when refusing to do something because of conflict. (d38a30d)
   1#include "cache.h"
   2
   3int advice_push_nonfastforward = 1;
   4int advice_status_hints = 1;
   5int advice_commit_before_merge = 1;
   6int advice_resolve_conflict = 1;
   7
   8static struct {
   9        const char *name;
  10        int *preference;
  11} advice_config[] = {
  12        { "pushnonfastforward", &advice_push_nonfastforward },
  13        { "statushints", &advice_status_hints },
  14        { "commitbeforemerge", &advice_commit_before_merge },
  15        { "resolveconflict", &advice_resolve_conflict },
  16};
  17
  18int git_default_advice_config(const char *var, const char *value)
  19{
  20        const char *k = skip_prefix(var, "advice.");
  21        int i;
  22
  23        for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
  24                if (strcmp(k, advice_config[i].name))
  25                        continue;
  26                *advice_config[i].preference = git_config_bool(var, value);
  27                return 0;
  28        }
  29
  30        return 0;
  31}
  32
  33void NORETURN die_resolve_conflict(const char *me)
  34{
  35        if (advice_resolve_conflict)
  36                /*
  37                 * Message used both when 'git commit' fails and when
  38                 * other commands doing a merge do.
  39                 */
  40                die("'%s' is not possible because you have unmerged files.\n"
  41                    "Please, fix them up in the work tree, and then use 'git add/rm <file>' as\n"
  42                    "appropriate to mark resolution and make a commit, or use 'git commit -a'.", me);
  43        else
  44                die("'%s' is not possible because you have unmerged files.", me);
  45}