Merge branch 'js/difftool-no-index'
authorJunio C Hamano <gitster@pobox.com>
Sun, 19 May 2019 07:45:35 +0000 (16:45 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sun, 19 May 2019 07:45:35 +0000 (16:45 +0900)
The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
mode; they are now explicitly marked as mutually incompatible.

* js/difftool-no-index:
difftool --no-index: error out on --dir-diff (and don't crash)

1  2 
builtin/difftool.c
diff --combined builtin/difftool.c
index 53188df71438ad83186bcae37a8742704ae048a5,5704a76088df878eab6a4f5d0a7785989279e712..16eb8b70ea33eb00516d7ab035a90df9728d5296
@@@ -24,6 -24,7 +24,6 @@@
  #include "object-store.h"
  #include "dir.h"
  
 -static char *diff_gui_tool;
  static int trust_exit_code;
  
  static const char *const builtin_difftool_usage[] = {
  
  static int difftool_config(const char *var, const char *value, void *cb)
  {
 -      if (!strcmp(var, "diff.guitool")) {
 -              diff_gui_tool = xstrdup(value);
 -              return 0;
 -      }
 -
        if (!strcmp(var, "difftool.trustexitcode")) {
                trust_exit_code = git_config_bool(var, value);
                return 0;
@@@ -59,12 -65,14 +59,12 @@@ static int parse_index_info(char *p, in
        *mode2 = (int)strtol(p + 1, &p, 8);
        if (*p != ' ')
                return error("expected ' ', got '%c'", *p);
 -      if (get_oid_hex(++p, oid1))
 -              return error("expected object ID, got '%s'", p + 1);
 -      p += GIT_SHA1_HEXSZ;
 +      if (parse_oid_hex(++p, oid1, (const char **)&p))
 +              return error("expected object ID, got '%s'", p);
        if (*p != ' ')
                return error("expected ' ', got '%c'", *p);
 -      if (get_oid_hex(++p, oid2))
 -              return error("expected object ID, got '%s'", p + 1);
 -      p += GIT_SHA1_HEXSZ;
 +      if (parse_oid_hex(++p, oid2, (const char **)&p))
 +              return error("expected object ID, got '%s'", p);
        if (*p != ' ')
                return error("expected ' ', got '%c'", *p);
        *status = *++p;
@@@ -727,13 -735,11 +727,14 @@@ int cmd_difftool(int argc, const char *
                setup_work_tree();
                setenv(GIT_DIR_ENVIRONMENT, absolute_path(get_git_dir()), 1);
                setenv(GIT_WORK_TREE_ENVIRONMENT, absolute_path(get_git_work_tree()), 1);
-       }
+       } else if (dir_diff)
+               die(_("--dir-diff is incompatible with --no-index"));
  
 -      if (use_gui_tool && diff_gui_tool && *diff_gui_tool)
 -              setenv("GIT_DIFF_TOOL", diff_gui_tool, 1);
 +      if (use_gui_tool + !!difftool_cmd + !!extcmd > 1)
 +              die(_("--gui, --tool and --extcmd are mutually exclusive"));
 +
 +      if (use_gui_tool)
 +              setenv("GIT_MERGETOOL_GUI", "true", 1);
        else if (difftool_cmd) {
                if (*difftool_cmd)
                        setenv("GIT_DIFF_TOOL", difftool_cmd, 1);