mirror of
https://github.com/git/git.git
synced 2024-10-28 12:59:41 +01:00
Merge branch 'jc/format-patch-rfc-more'
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:
commit
708e9257f8
3 changed files with 65 additions and 10 deletions
|
@ -20,7 +20,7 @@ SYNOPSIS
|
||||||
[--in-reply-to=<message-id>] [--suffix=.<sfx>]
|
[--in-reply-to=<message-id>] [--suffix=.<sfx>]
|
||||||
[--ignore-if-in-upstream] [--always]
|
[--ignore-if-in-upstream] [--always]
|
||||||
[--cover-from-description=<mode>]
|
[--cover-from-description=<mode>]
|
||||||
[--rfc] [--subject-prefix=<subject-prefix>]
|
[--rfc[=<rfc>]] [--subject-prefix=<subject-prefix>]
|
||||||
[(--reroll-count|-v) <n>]
|
[(--reroll-count|-v) <n>]
|
||||||
[--to=<email>] [--cc=<email>]
|
[--to=<email>] [--cc=<email>]
|
||||||
[--[no-]cover-letter] [--quiet]
|
[--[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
|
value of the `format.filenameMaxLength` configuration
|
||||||
variable, or 64 if unconfigured.
|
variable, or 64 if unconfigured.
|
||||||
|
|
||||||
--rfc::
|
--rfc[=<rfc>]::
|
||||||
Prepends "RFC" to the subject prefix (producing "RFC PATCH" by
|
Prepends the string _<rfc>_ (defaults to "RFC") to
|
||||||
default). RFC means "Request For Comments"; use this when sending
|
the subject prefix. As the subject prefix defaults to
|
||||||
an experimental patch for discussion rather than application.
|
"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>::
|
-v <n>::
|
||||||
--reroll-count=<n>::
|
--reroll-count=<n>::
|
||||||
|
|
|
@ -1494,6 +1494,19 @@ static int subject_prefix_callback(const struct option *opt, const char *arg,
|
||||||
return 0;
|
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_cmdline_opt = 0;
|
||||||
|
|
||||||
static int numbered_callback(const struct option *opt, const char *arg,
|
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 rdiff2 = STRBUF_INIT;
|
||||||
struct strbuf rdiff_title = STRBUF_INIT;
|
struct strbuf rdiff_title = STRBUF_INIT;
|
||||||
struct strbuf sprefix = STRBUF_INIT;
|
struct strbuf sprefix = STRBUF_INIT;
|
||||||
|
const char *rfc = NULL;
|
||||||
int creation_factor = -1;
|
int creation_factor = -1;
|
||||||
int rfc = 0;
|
|
||||||
|
|
||||||
const struct option builtin_format_patch_options[] = {
|
const struct option builtin_format_patch_options[] = {
|
||||||
OPT_CALLBACK_F('n', "numbered", &numbered, NULL,
|
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")),
|
N_("mark the series as Nth re-roll")),
|
||||||
OPT_INTEGER(0, "filename-max-length", &fmt_patch_name_max,
|
OPT_INTEGER(0, "filename-max-length", &fmt_patch_name_max,
|
||||||
N_("max length of output filename")),
|
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,
|
OPT_STRING(0, "cover-from-description", &cover_from_description_arg,
|
||||||
N_("cover-from-description-mode"),
|
N_("cover-from-description-mode"),
|
||||||
N_("generate parts of a cover letter based on a branch's description")),
|
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)
|
if (cover_from_description_arg)
|
||||||
cover_from_description_mode = parse_cover_from_description(cover_from_description_arg);
|
cover_from_description_mode = parse_cover_from_description(cover_from_description_arg);
|
||||||
|
|
||||||
if (rfc) {
|
if (rfc && rfc[0]) {
|
||||||
strbuf_insertstr(&sprefix, 0, "RFC ");
|
|
||||||
subject_prefix = 1;
|
subject_prefix = 1;
|
||||||
|
if (rfc[0] == '-')
|
||||||
|
strbuf_addf(&sprefix, " %s", rfc + 1);
|
||||||
|
else
|
||||||
|
strbuf_insertf(&sprefix, 0, "%s ", rfc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reroll_count) {
|
if (reroll_count) {
|
||||||
|
|
|
@ -1368,12 +1368,38 @@ test_expect_success 'empty subject prefix does not have extra space' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--rfc' '
|
test_expect_success '--rfc and --no-rfc' '
|
||||||
cat >expect <<-\EOF &&
|
cat >expect <<-\EOF &&
|
||||||
Subject: [RFC PATCH 1/1] header with . in it
|
Subject: [RFC PATCH 1/1] header with . in it
|
||||||
EOF
|
EOF
|
||||||
git format-patch -n -1 --stdout --rfc >patch &&
|
git format-patch -n -1 --stdout --rfc >patch &&
|
||||||
grep "^Subject:" patch >actual &&
|
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
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue