Add custom subject prefix support to format-patch (take 3)

Add a new option to git-format-patch, entitled --subject-prefix that allows
control of the subject prefix '[PATCH]'. Using this option, the text 'PATCH' is
replaced with whatever input is provided to the option. This allows easily
generating patches like '[PATCH 2.6.21-rc3]' or properly numbered series like
'[-mm3 PATCH N/M]'. This patch provides the implementation and documentation.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Robin H. Johnson 2007-04-11 16:58:07 -07:00 коммит произвёл Junio C Hamano
Родитель 566f5b217d
Коммит 2d9e4a47d1
4 изменённых файлов: 31 добавлений и 11 удалений

Просмотреть файл

@ -14,6 +14,7 @@ SYNOPSIS
[-s | --signoff] [<common diff options>] [--start-number <n>] [-s | --signoff] [<common diff options>] [--start-number <n>]
[--in-reply-to=Message-Id] [--suffix=.<sfx>] [--in-reply-to=Message-Id] [--suffix=.<sfx>]
[--ignore-if-in-upstream] [--ignore-if-in-upstream]
[--subject-prefix=Subject-Prefix]
<since>[..<until>] <since>[..<until>]
DESCRIPTION DESCRIPTION
@ -98,6 +99,12 @@ include::diff-options.txt[]
patches being generated, and any patch that matches is patches being generated, and any patch that matches is
ignored. ignored.
--subject-prefix=<Subject-Prefix>::
Instead of the standard '[PATCH]' prefix in the subject
line, instead use '[<Subject-Prefix>]'. This
allows for useful naming of a patch series, and can be
combined with the --numbered option.
--suffix=.<sfx>:: --suffix=.<sfx>::
Instead of using `.patch` as the suffix for generated Instead of using `.patch` as the suffix for generated
filenames, use specifed suffix. A common alternative is filenames, use specifed suffix. A common alternative is

Просмотреть файл

@ -417,6 +417,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
int numbered = 0; int numbered = 0;
int start_number = -1; int start_number = -1;
int keep_subject = 0; int keep_subject = 0;
int subject_prefix = 0;
int ignore_if_in_upstream = 0; int ignore_if_in_upstream = 0;
int thread = 0; int thread = 0;
const char *in_reply_to = NULL; const char *in_reply_to = NULL;
@ -434,6 +435,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
rev.ignore_merges = 1; rev.ignore_merges = 1;
rev.diffopt.msg_sep = ""; rev.diffopt.msg_sep = "";
rev.diffopt.recursive = 1; rev.diffopt.recursive = 1;
rev.subject_prefix = "PATCH";
rev.extra_headers = extra_headers; rev.extra_headers = extra_headers;
@ -509,8 +511,10 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
if (i == argc) if (i == argc)
die("Need a Message-Id for --in-reply-to"); die("Need a Message-Id for --in-reply-to");
in_reply_to = argv[i]; in_reply_to = argv[i];
} } else if (!prefixcmp(argv[i], "--subject-prefix=")) {
else if (!prefixcmp(argv[i], "--suffix=")) subject_prefix = 1;
rev.subject_prefix = argv[i] + 17;
} else if (!prefixcmp(argv[i], "--suffix="))
fmt_patch_suffix = argv[i] + 9; fmt_patch_suffix = argv[i] + 9;
else else
argv[j++] = argv[i]; argv[j++] = argv[i];
@ -521,6 +525,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
start_number = 1; start_number = 1;
if (numbered && keep_subject) if (numbered && keep_subject)
die ("-n and -k are mutually exclusive."); die ("-n and -k are mutually exclusive.");
if (keep_subject && subject_prefix)
die ("--subject-prefix and -k are mutually exclusive.");
argc = setup_revisions(argc, argv, &rev, "HEAD"); argc = setup_revisions(argc, argv, &rev, "HEAD");
if (argc > 1) if (argc > 1)

Просмотреть файл

@ -165,14 +165,20 @@ void show_log(struct rev_info *opt, const char *sep)
if (opt->total > 0) { if (opt->total > 0) {
static char buffer[64]; static char buffer[64];
snprintf(buffer, sizeof(buffer), snprintf(buffer, sizeof(buffer),
"Subject: [PATCH %0*d/%d] ", "Subject: [%s %0*d/%d] ",
opt->subject_prefix,
digits_in_number(opt->total), digits_in_number(opt->total),
opt->nr, opt->total); opt->nr, opt->total);
subject = buffer; subject = buffer;
} else if (opt->total == 0) } else if (opt->total == 0) {
subject = "Subject: [PATCH] "; static char buffer[256];
else snprintf(buffer, sizeof(buffer),
"Subject: [%s] ",
opt->subject_prefix);
subject = buffer;
} else {
subject = "Subject: "; subject = "Subject: ";
}
printf("From %s Mon Sep 17 00:00:00 2001\n", sha1); printf("From %s Mon Sep 17 00:00:00 2001\n", sha1);
if (opt->message_id) if (opt->message_id)

Просмотреть файл

@ -78,6 +78,7 @@ struct rev_info {
const char *add_signoff; const char *add_signoff;
const char *extra_headers; const char *extra_headers;
const char *log_reencode; const char *log_reencode;
const char *subject_prefix;
int no_inline; int no_inline;
/* Filter by commit log message */ /* Filter by commit log message */