diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-03-22 00:18:55 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-03-22 00:18:55 +0300 |
commit | 15108de2fa0cd8f002a0551d14c84505a853071c (patch) | |
tree | ffdbcfd36b7f18eba44b8733c4df582303433000 /builtin/log.c | |
parent | e25cabbf6b34e4a6e903d65102d87055cc994778 (diff) | |
parent | ab89575387c02ea024163256826ad1c6dd2e4247 (diff) |
Merge branch 'jk/format-patch-ignore-noprefix'
"git format-patch" honors the src/dst prefixes set to nonstandard
values with configuration variables like "diff.noprefix", causing
receiving end of the patch that expects the standard -p1 format to
break. Teach "format-patch" to ignore end-user configuration and
always use the standard prefixes.
This is a backward compatibility breaking change.
* jk/format-patch-ignore-noprefix:
rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
format-patch: add format.noprefix option
format-patch: do not respect diff.noprefix
diff: add --default-prefix option
t4013: add tests for diff prefix options
diff: factor out src/dst prefix setup
Diffstat (limited to 'builtin/log.c')
-rw-r--r-- | builtin/log.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/builtin/log.c b/builtin/log.c index bc204ea76f..4693385e8e 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -58,6 +58,7 @@ static int stdout_mboxrd; static const char *fmt_patch_subject_prefix = "PATCH"; static int fmt_patch_name_max = FORMAT_PATCH_NAME_MAX_DEFAULT; static const char *fmt_pretty; +static int format_no_prefix; static const char * const builtin_log_usage[] = { N_("git log [<options>] [<revision-range>] [[--] <path>...]"), @@ -1084,6 +1085,19 @@ static int git_format_config(const char *var, const char *value, void *cb) stdout_mboxrd = git_config_bool(var, value); return 0; } + if (!strcmp(var, "format.noprefix")) { + format_no_prefix = 1; + return 0; + } + + /* + * ignore some porcelain config which would otherwise be parsed by + * git_diff_ui_config(), via git_log_config(); we can't just avoid + * diff_ui_config completely, because we do care about some ui options + * like color. + */ + if (!strcmp(var, "diff.noprefix")) + return 0; return git_log_config(var, value, cb); } @@ -1993,6 +2007,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) s_r_opt.def = "HEAD"; s_r_opt.revarg_opt = REVARG_COMMITTISH; + if (format_no_prefix) + diff_set_noprefix(&rev.diffopt); + if (default_attach) { rev.mime_boundary = default_attach; rev.no_inline = 1; |