Some mailing list use "PATCH:" rather than "[PATCH]" to prefix patches, so introduce a new option to configure: - 2 chars that would enclose PATCH (and counters) - 1 char that would come just after the PATCH (and counters) --- This mail has been sent with: git -c format.subjectprefixsep=: send-email --annotate --subject-prefix=PATCH/RFC Documentation/config.txt | 5 ++ builtin/log.c | 5 ++ log-tree.c | 23 ++++-- revision.h | 1 + t/t4013-diff-various.sh | 2 + ...fixsep=:_format-patch_--stdout_initial..master^ | 81 ++++++++++++++++++++++ ...ixsep=<>_format-patch_--stdout_initial..master^ | 81 ++++++++++++++++++++++ 7 files changed, 194 insertions(+), 4 deletions(-) create mode 100644 t/t4013/diff.-c_format.subjectprefixsep=:_format-patch_--stdout_initial..master^ create mode 100644 t/t4013/diff.-c_format.subjectprefixsep=<>_format-patch_--stdout_initial..master^ diff --git a/Documentation/config.txt b/Documentation/config.txt index 6862e3e..8cf8aac 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1151,6 +1151,11 @@ format.subjectprefix:: The default for format-patch is to output files with the '[PATCH]' subject prefix. Use this variable to change that prefix. +format.subjectprefixsep:: + The default for format-patch is to enclose subjectprefix with '[]'. + If only one char is given it is placed after the prefix. If it + contains two chars, they enclose the prefix. + format.signature:: The default for format-patch is to output a signature containing the Git version number. Use this variable to change that default. diff --git a/builtin/log.c b/builtin/log.c index f2a9f01..18a4e7e 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -35,6 +35,7 @@ static int decoration_style; static int decoration_given; static int use_mailmap_config; static const char *fmt_patch_subject_prefix = "PATCH"; +static const char *fmt_patch_subject_prefix_sep = "[]"; static const char *fmt_pretty; static const char * const builtin_log_usage[] = { @@ -109,6 +110,7 @@ static void cmd_log_init_defaults(struct rev_info *rev) rev->abbrev_commit = default_abbrev_commit; rev->show_root_diff = default_show_root; rev->subject_prefix = fmt_patch_subject_prefix; + rev->subject_prefix_sep = fmt_patch_subject_prefix_sep; DIFF_OPT_SET(&rev->diffopt, ALLOW_TEXTCONV); if (default_date_mode) @@ -374,6 +376,8 @@ static int git_log_config(const char *var, const char *value, void *cb) return git_config_string(&fmt_pretty, var, value); if (!strcmp(var, "format.subjectprefix")) return git_config_string(&fmt_patch_subject_prefix, var, value); + if (!strcmp(var, "format.subjectprefixsep")) + return git_config_string(&fmt_patch_subject_prefix_sep, var, value); if (!strcmp(var, "log.abbrevcommit")) { default_abbrev_commit = git_config_bool(var, value); return 0; @@ -1259,6 +1263,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) rev.max_parents = 1; DIFF_OPT_SET(&rev.diffopt, RECURSIVE); rev.subject_prefix = fmt_patch_subject_prefix; + rev.subject_prefix_sep = fmt_patch_subject_prefix_sep; memset(&s_r_opt, 0, sizeof(s_r_opt)); s_r_opt.def = "HEAD"; s_r_opt.revarg_opt = REVARG_COMMITTISH; diff --git a/log-tree.c b/log-tree.c index 7f0890e..8449d19 100644 --- a/log-tree.c +++ b/log-tree.c @@ -269,22 +269,37 @@ void log_write_email_headers(struct rev_info *opt, struct commit *commit, const char *subject = NULL; const char *extra_headers = opt->extra_headers; const char *name = sha1_to_hex(commit->object.sha1); + char subject_sep_pre[2]; + char subject_sep_post[2]; + + subject_sep_pre[0] = subject_sep_post[0] = '\0'; + if (strlen(opt->subject_prefix_sep) > 1) { + subject_sep_pre[0] = opt->subject_prefix_sep[0]; + subject_sep_post[0] = opt->subject_prefix_sep[1]; + } else { + subject_sep_post[0] = opt->subject_prefix_sep[0]; + } + subject_sep_pre[1] = subject_sep_post[1] = '\0'; *need_8bit_cte_p = 0; /* unknown */ if (opt->total > 0) { static char buffer[64]; snprintf(buffer, sizeof(buffer), - "Subject: [%s%s%0*d/%d] ", + "Subject: %s%s%s%0*d/%d%s ", + subject_sep_pre, opt->subject_prefix, *opt->subject_prefix ? " " : "", digits_in_number(opt->total), - opt->nr, opt->total); + opt->nr, opt->total, + subject_sep_post); subject = buffer; } else if (opt->total == 0 && opt->subject_prefix && *opt->subject_prefix) { static char buffer[256]; snprintf(buffer, sizeof(buffer), - "Subject: [%s] ", - opt->subject_prefix); + "Subject: %s%s%s ", + subject_sep_pre, + opt->subject_prefix, + subject_sep_post); subject = buffer; } else { subject = "Subject: "; diff --git a/revision.h b/revision.h index 9cb5adc..baae88f 100644 --- a/revision.h +++ b/revision.h @@ -162,6 +162,7 @@ struct rev_info { const char *extra_headers; const char *log_reencode; const char *subject_prefix; + const char *subject_prefix_sep; int no_inline; int show_log_size; struct string_list *mailmap; diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 6ec6072..d2257ab 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -289,6 +289,8 @@ format-patch --inline --stdout --subject-prefix=TESTCASE initial..master config format.subjectprefix DIFFERENT_PREFIX format-patch --inline --stdout initial..master^^ format-patch --stdout --cover-letter -n initial..master^ +-c format.subjectprefixsep=: format-patch --stdout initial..master^ +-c format.subjectprefixsep=<> format-patch --stdout initial..master^ diff --abbrev initial..side diff -r initial..side diff --git a/t/t4013/diff.-c_format.subjectprefixsep=:_format-patch_--stdout_initial..master^ b/t/t4013/diff.-c_format.subjectprefixsep=:_format-patch_--stdout_initial..master^ new file mode 100644 index 0000000..b4a741b --- /dev/null +++ b/t/t4013/diff.-c_format.subjectprefixsep=:_format-patch_--stdout_initial..master^ @@ -0,0 +1,81 @@ +$ git -c format.subjectprefixsep=: format-patch --stdout initial..master^ +From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001 +From: A U Thor <author@xxxxxxxxxxx> +Date: Mon, 26 Jun 2006 00:01:00 +0000 +Subject: DIFFERENT_PREFIX 1/2: Second + +This is the second commit. +--- + dir/sub | 2 ++ + file0 | 3 +++ + file2 | 3 --- + 3 files changed, 5 insertions(+), 3 deletions(-) + delete mode 100644 file2 + +diff --git a/dir/sub b/dir/sub +index 35d242b..8422d40 100644 +--- a/dir/sub ++++ b/dir/sub +@@ -1,2 +1,4 @@ + A + B ++C ++D +diff --git a/file0 b/file0 +index 01e79c3..b414108 100644 +--- a/file0 ++++ b/file0 +@@ -1,3 +1,6 @@ + 1 + 2 + 3 ++4 ++5 ++6 +diff --git a/file2 b/file2 +deleted file mode 100644 +index 01e79c3..0000000 +--- a/file2 ++++ /dev/null +@@ -1,3 +0,0 @@ +-1 +-2 +-3 +-- +g-i-t--v-e-r-s-i-o-n + + +From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001 +From: A U Thor <author@xxxxxxxxxxx> +Date: Mon, 26 Jun 2006 00:02:00 +0000 +Subject: DIFFERENT_PREFIX 2/2: Third + +--- + dir/sub | 2 ++ + file1 | 3 +++ + 2 files changed, 5 insertions(+) + create mode 100644 file1 + +diff --git a/dir/sub b/dir/sub +index 8422d40..cead32e 100644 +--- a/dir/sub ++++ b/dir/sub +@@ -2,3 +2,5 @@ A + B + C + D ++E ++F +diff --git a/file1 b/file1 +new file mode 100644 +index 0000000..b1e6722 +--- /dev/null ++++ b/file1 +@@ -0,0 +1,3 @@ ++A ++B ++C +-- +g-i-t--v-e-r-s-i-o-n + +$ diff --git a/t/t4013/diff.-c_format.subjectprefixsep=<>_format-patch_--stdout_initial..master^ b/t/t4013/diff.-c_format.subjectprefixsep=<>_format-patch_--stdout_initial..master^ new file mode 100644 index 0000000..c0305df --- /dev/null +++ b/t/t4013/diff.-c_format.subjectprefixsep=<>_format-patch_--stdout_initial..master^ @@ -0,0 +1,81 @@ +$ git -c format.subjectprefixsep=<> format-patch --stdout initial..master^ +From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001 +From: A U Thor <author@xxxxxxxxxxx> +Date: Mon, 26 Jun 2006 00:01:00 +0000 +Subject: <DIFFERENT_PREFIX 1/2> Second + +This is the second commit. +--- + dir/sub | 2 ++ + file0 | 3 +++ + file2 | 3 --- + 3 files changed, 5 insertions(+), 3 deletions(-) + delete mode 100644 file2 + +diff --git a/dir/sub b/dir/sub +index 35d242b..8422d40 100644 +--- a/dir/sub ++++ b/dir/sub +@@ -1,2 +1,4 @@ + A + B ++C ++D +diff --git a/file0 b/file0 +index 01e79c3..b414108 100644 +--- a/file0 ++++ b/file0 +@@ -1,3 +1,6 @@ + 1 + 2 + 3 ++4 ++5 ++6 +diff --git a/file2 b/file2 +deleted file mode 100644 +index 01e79c3..0000000 +--- a/file2 ++++ /dev/null +@@ -1,3 +0,0 @@ +-1 +-2 +-3 +-- +g-i-t--v-e-r-s-i-o-n + + +From 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0 Mon Sep 17 00:00:00 2001 +From: A U Thor <author@xxxxxxxxxxx> +Date: Mon, 26 Jun 2006 00:02:00 +0000 +Subject: <DIFFERENT_PREFIX 2/2> Third + +--- + dir/sub | 2 ++ + file1 | 3 +++ + 2 files changed, 5 insertions(+) + create mode 100644 file1 + +diff --git a/dir/sub b/dir/sub +index 8422d40..cead32e 100644 +--- a/dir/sub ++++ b/dir/sub +@@ -2,3 +2,5 @@ A + B + C + D ++E ++F +diff --git a/file1 b/file1 +new file mode 100644 +index 0000000..b1e6722 +--- /dev/null ++++ b/file1 +@@ -0,0 +1,3 @@ ++A ++B ++C +-- +g-i-t--v-e-r-s-i-o-n + +$ -- 2.2.1.213.gdc6c5b9 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html