Merge branch 'rs/diff-exit-code-with-external-diff'

"git diff --exit-code --ext-diff" learned to take the exit status
of the external diff driver into account when deciding the exit
status of the overall "git diff" invocation when configured to do
so.

* rs/diff-exit-code-with-external-diff:
  diff: let external diffs report that changes are uninteresting
  userdiff: add and use struct external_diff
  t4020: test exit code with external diffs
This commit is contained in:
Junio C Hamano
2024-06-20 15:45:08 -07:00
8 changed files with 168 additions and 19 deletions

View File

@ -333,7 +333,7 @@ PATTERNS("scheme",
"|([^][)(}{[ \t])+"),
PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
"\\\\[a-zA-Z@]+|\\\\.|([a-zA-Z0-9]|[^\x01-\x7f])+"),
{ "default", NULL, NULL, -1, { NULL, 0 } },
{ .name = "default", .binary = -1 },
};
#undef PATTERNS
#undef IPATTERN
@ -445,7 +445,11 @@ int userdiff_config(const char *k, const char *v)
if (!strcmp(type, "binary"))
return parse_tristate(&drv->binary, k, v);
if (!strcmp(type, "command"))
return git_config_string((char **) &drv->external, k, v);
return git_config_string((char **) &drv->external.cmd, k, v);
if (!strcmp(type, "trustexitcode")) {
drv->external.trust_exit_code = git_config_bool(k, v);
return 0;
}
if (!strcmp(type, "textconv"))
return git_config_string((char **) &drv->textconv, k, v);
if (!strcmp(type, "cachetextconv"))