1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-07 03:26:08 +02:00

Merge branch 'jc/format-patch-rfc-more' into next

The "--rfc" option of "git format-patch" learned to take an
optional string value to be used in place of "RFC" to tweak the
"[PATCH]" on the subject header.

* jc/format-patch-rfc-more:
  format-patch: "--rfc=-(WIP)" appends to produce [PATCH (WIP)]
  format-patch: allow --rfc to optionally take a value, like --rfc=WIP
This commit is contained in:
Junio C Hamano 2024-04-23 15:06:59 -07:00
commit 9f51487974
3 changed files with 65 additions and 10 deletions

View File

@ -20,7 +20,7 @@ SYNOPSIS
[--in-reply-to=<message-id>] [--suffix=.<sfx>]
[--ignore-if-in-upstream] [--always]
[--cover-from-description=<mode>]
[--rfc] [--subject-prefix=<subject-prefix>]
[--rfc[=<rfc>]] [--subject-prefix=<subject-prefix>]
[(--reroll-count|-v) <n>]
[--to=<email>] [--cc=<email>]
[--[no-]cover-letter] [--quiet]
@ -238,10 +238,21 @@ the patches (with a value of e.g. "PATCH my-project").
value of the `format.filenameMaxLength` configuration
variable, or 64 if unconfigured.
--rfc::
Prepends "RFC" to the subject prefix (producing "RFC PATCH" by
default). RFC means "Request For Comments"; use this when sending
an experimental patch for discussion rather than application.
--rfc[=<rfc>]::
Prepends the string _<rfc>_ (defaults to "RFC") to
the subject prefix. As the subject prefix defaults to
"PATCH", you'll get "RFC PATCH" by default.
+
RFC means "Request For Comments"; use this when sending
an experimental patch for discussion rather than application.
"--rfc=WIP" may also be a useful way to indicate that a patch
is not complete yet ("WIP" stands for "Work In Progress").
+
If the convention of the receiving community for a particular extra
string is to have it _after_ the subject prefix, the string _<rfc>_
can be prefixed with a dash ("`-`") to signal that the the rest of
the _<rfc>_ string should be appended to the subject prefix instead,
e.g., `--rfc='-(WIP)'` results in "PATCH (WIP)".
-v <n>::
--reroll-count=<n>::

View File

@ -1494,6 +1494,19 @@ static int subject_prefix_callback(const struct option *opt, const char *arg,
return 0;
}
static int rfc_callback(const struct option *opt, const char *arg,
int unset)
{
const char **rfc = opt->value;
*rfc = opt->value;
if (unset)
*rfc = NULL;
else
*rfc = arg ? arg : "RFC";
return 0;
}
static int numbered_cmdline_opt = 0;
static int numbered_callback(const struct option *opt, const char *arg,
@ -1907,8 +1920,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
struct strbuf rdiff2 = STRBUF_INIT;
struct strbuf rdiff_title = STRBUF_INIT;
struct strbuf sprefix = STRBUF_INIT;
const char *rfc = NULL;
int creation_factor = -1;
int rfc = 0;
const struct option builtin_format_patch_options[] = {
OPT_CALLBACK_F('n', "numbered", &numbered, NULL,
@ -1932,7 +1945,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
N_("mark the series as Nth re-roll")),
OPT_INTEGER(0, "filename-max-length", &fmt_patch_name_max,
N_("max length of output filename")),
OPT_BOOL(0, "rfc", &rfc, N_("use [RFC PATCH] instead of [PATCH]")),
OPT_CALLBACK_F(0, "rfc", &rfc, N_("rfc"),
N_("add <rfc> (default 'RFC') before 'PATCH'"),
PARSE_OPT_OPTARG, rfc_callback),
OPT_STRING(0, "cover-from-description", &cover_from_description_arg,
N_("cover-from-description-mode"),
N_("generate parts of a cover letter based on a branch's description")),
@ -2050,9 +2065,12 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
if (cover_from_description_arg)
cover_from_description_mode = parse_cover_from_description(cover_from_description_arg);
if (rfc) {
strbuf_insertstr(&sprefix, 0, "RFC ");
if (rfc && rfc[0]) {
subject_prefix = 1;
if (rfc[0] == '-')
strbuf_addf(&sprefix, " %s", rfc + 1);
else
strbuf_insertf(&sprefix, 0, "%s ", rfc);
}
if (reroll_count) {

View File

@ -1368,12 +1368,38 @@ test_expect_success 'empty subject prefix does not have extra space' '
test_cmp expect actual
'
test_expect_success '--rfc' '
test_expect_success '--rfc and --no-rfc' '
cat >expect <<-\EOF &&
Subject: [RFC PATCH 1/1] header with . in it
EOF
git format-patch -n -1 --stdout --rfc >patch &&
grep "^Subject:" patch >actual &&
test_cmp expect actual &&
git format-patch -n -1 --stdout --rfc --no-rfc >patch &&
sed -e "s/RFC //" expect >expect-raw &&
grep "^Subject:" patch >actual &&
test_cmp expect-raw actual
'
test_expect_success '--rfc=WIP and --rfc=' '
cat >expect <<-\EOF &&
Subject: [WIP PATCH 1/1] header with . in it
EOF
git format-patch -n -1 --stdout --rfc=WIP >patch &&
grep "^Subject:" patch >actual &&
test_cmp expect actual &&
git format-patch -n -1 --stdout --rfc --rfc= >patch &&
sed -e "s/WIP //" expect >expect-raw &&
grep "^Subject:" patch >actual &&
test_cmp expect-raw actual
'
test_expect_success '--rfc=-(WIP) appends' '
cat >expect <<-\EOF &&
Subject: [PATCH (WIP) 1/1] header with . in it
EOF
git format-patch -n -1 --stdout --rfc="-(WIP)" >patch &&
grep "^Subject:" patch >actual &&
test_cmp expect actual
'