From: Junio C Hamano Date: Mon, 10 Jul 2006 06:47:39 +0000 (-0700) Subject: Merge branch 'ew/diff' X-Git-Tag: v1.4.2-rc1~58 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/fc93dbbfc91d5214b03101e057ba16f329763ef9?ds=inline;hp=-c Merge branch 'ew/diff' * ew/diff: templates/hooks--update: replace diffstat calls with git diff --stat diff: do not use configuration magic at the core-level Update diff-options and config documentation. diff.c: --no-color to defeat diff.color configuration. diff.c: respect diff.renames config option --- fc93dbbfc91d5214b03101e057ba16f329763ef9 diff --combined builtin-log.c index 0aeeaa4e20,dd5a5a2b14..7e5cab15c1 --- a/builtin-log.c +++ b/builtin-log.c @@@ -47,7 -47,7 +47,7 @@@ int cmd_whatchanged(int argc, const cha { struct rev_info rev; - git_config(git_diff_config); + git_config(git_diff_ui_config); init_revisions(&rev); rev.diff = 1; rev.diffopt.recursive = 1; @@@ -62,7 -62,7 +62,7 @@@ int cmd_show(int argc, const char **arg { struct rev_info rev; - git_config(git_diff_config); + git_config(git_diff_ui_config); init_revisions(&rev); rev.diff = 1; rev.diffopt.recursive = 1; @@@ -79,7 -79,7 +79,7 @@@ int cmd_log(int argc, const char **argv { struct rev_info rev; - git_config(git_diff_config); + git_config(git_diff_ui_config); init_revisions(&rev); rev.always_show_header = 1; cmd_log_init(argc, argv, envp, &rev); @@@ -105,10 -105,7 +105,10 @@@ static int git_format_config(const cha strcat(extra_headers, value); return 0; } + if (!strcmp(var, "diff.color")) { + return 0; + } - return git_diff_config(var, value); + return git_diff_ui_config(var, value); } diff --combined diff.c index a00f9d1e52,493650cc0e..e101bfd8c8 --- a/diff.c +++ b/diff.c @@@ -13,6 -13,7 +13,7 @@@ static int use_size_cache; + static int diff_detect_rename_default = 0; static int diff_rename_limit_default = -1; static int diff_use_color_default = 0; @@@ -101,7 -102,13 +102,13 @@@ static const char *parse_diff_color_val die("bad config value '%s' for variable '%s'", value, var); } - int git_diff_config(const char *var, const char *value) + /* + * These are to give UI layer defaults. + * The core-level commands such as git-diff-files should + * never be affected by the setting of diff.renames + * the user happens to have in the configuration file. + */ + int git_diff_ui_config(const char *var, const char *value) { if (!strcmp(var, "diff.renamelimit")) { diff_rename_limit_default = git_config_int(var, value); @@@ -110,14 -117,8 +117,14 @@@ if (!strcmp(var, "diff.color")) { if (!value) diff_use_color_default = 1; /* bool */ - else if (!strcasecmp(value, "auto")) - diff_use_color_default = isatty(1); + else if (!strcasecmp(value, "auto")) { + diff_use_color_default = 0; + if (isatty(1) || pager_in_use) { + char *term = getenv("TERM"); + if (term && strcmp(term, "dumb")) + diff_use_color_default = 1; + } + } else if (!strcasecmp(value, "never")) diff_use_color_default = 0; else if (!strcasecmp(value, "always")) @@@ -126,6 -127,16 +133,16 @@@ diff_use_color_default = git_config_bool(var, value); return 0; } + if (!strcmp(var, "diff.renames")) { + if (!value) + diff_detect_rename_default = DIFF_DETECT_RENAME; + else if (!strcasecmp(value, "copies") || + !strcasecmp(value, "copy")) + diff_detect_rename_default = DIFF_DETECT_COPY; + else if (git_config_bool(var,value)) + diff_detect_rename_default = DIFF_DETECT_RENAME; + return 0; + } if (!strncmp(var, "diff.color.", 11)) { int slot = parse_diff_color_slot(var, 11); diff_colors[slot] = parse_diff_color_value(value, var); @@@ -1437,6 -1448,7 +1454,7 @@@ void diff_setup(struct diff_options *op options->change = diff_change; options->add_remove = diff_addremove; options->color_diff = diff_use_color_default; + options->detect_rename = diff_detect_rename_default; } int diff_setup_done(struct diff_options *options) @@@ -1619,10 -1631,14 +1637,14 @@@ int diff_opt_parse(struct diff_options } else if (!strcmp(arg, "--color")) options->color_diff = 1; + else if (!strcmp(arg, "--no-color")) + options->color_diff = 0; else if (!strcmp(arg, "-w") || !strcmp(arg, "--ignore-all-space")) options->xdl_opts |= XDF_IGNORE_WHITESPACE; else if (!strcmp(arg, "-b") || !strcmp(arg, "--ignore-space-change")) options->xdl_opts |= XDF_IGNORE_WHITESPACE_CHANGE; + else if (!strcmp(arg, "--no-renames")) + options->detect_rename = 0; else return 0; return 1;