Hi Junio, I've gotten rid of all the `format.*.coverSubject` stuff and replaced it with a generic `format.inferCoverSubject` that will read the subject from the branch description. I've also made `git branch -d` stop deleting the `format.<branch>.*` variables. A new addition in this patchset is that format-patch is now taught to understand the `format.<branch-name>.outputDirectory` configuration. Changes since v2: * Replaced `format.<branch-name>.coverSubject` and `--cover-subject` with `format.inferCoverSubject` and `--infer-cover-subject` which reads the subject from the branch description * Do not let `git branch -d` delete `format.<branch-name>.*` configs * More documentation cleanup * Taught format-patch to read `format.<branch-name>.outputDirectory` as well Changes since v1: * Used format.<branch-name>.* variables instead of branch.<branch-name>.* Denton Liu (8): t4014: clean up style Doc: add more detail for git-format-patch format-patch: infer cover letter from branch description format-patch: move extra_headers logic later string-list: create string_list_append_all format-patch: read branch-specific To: and Cc: headers format-patch: move output_directory logic later format-patch: read branch-specific output directory Documentation/config/format.txt | 17 +- Documentation/git-format-patch.txt | 44 +- builtin/log.c | 237 ++++++--- string-list.c | 9 + string-list.h | 7 + t/t4014-format-patch.sh | 739 +++++++++++++++++------------ 6 files changed, 667 insertions(+), 386 deletions(-) Range-diff against v2: 1: 92d7be10aa = 1: 82c0dc9cc8 t4014: clean up style 2: 930a021b7f ! 2: a8cc599fd2 Doc: add more detail for git-format-patch @@ -9,7 +9,10 @@ In addition, document the special value of `--base=auto`. - Finally, while we're at it, surround option arguments with <>. + Next, while we're at it, surround option arguments with <>. + + Finally, document the `format.outputDirectory` config and change + `format.coverletter` to use camelcase. Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx> @@ -67,3 +70,25 @@ --root:: Treat the revision argument as a <revision range>, even if it +@@ + ------------- + You can specify extra mail header lines to be added to each message, + defaults for the subject prefix and file suffix, number patches when +-outputting more than one patch, add "To" or "Cc:" headers, configure +-attachments, and sign off patches with configuration variables. ++outputting more than one patch, add "To:" or "Cc:" headers, configure ++attachments, change the patch output directory, and sign off patches ++with configuration variables. + + ------------ + [format] +@@ + cc = <email> + attach [ = mime-boundary-string ] + signOff = true +- coverletter = auto ++ outputDirectory = <directory> ++ coverLetter = auto + ------------ + + 3: 075e2c0721 < -: ---------- format-patch: make cover letter subject configurable -: ---------- > 3: e3b8c96b1c format-patch: infer cover letter from branch description 4: 323179377e ! 4: 52ee126825 format-patch: move extra_headers logic later @@ -7,10 +7,10 @@ logic later in the function so that this happens. (This patch is best viewed with `git diff --color-moved`.) - Note that this logic only depends on the `git_config` and + Note that this logic only depends on `git_config` and `repo_init_revisions` and is depended on by the patch creation logic - which is directly below it so this move is effectively a no-op as - no dependencies being reordered. + which is directly below it so this move is effectively a no-op as no + dependencies being reordered. Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx> 5: 7a8fa4f5f6 = 5: 27c60c715c string-list: create string_list_append_all 6: 9d7338f067 ! 6: f2a1546b2d format-patch: read branch-specific To: and Cc: headers @@ -59,29 +59,20 @@ far (from config or command line). @@ - ------------- - You can specify extra mail header lines to be added to each message, - defaults for the subject prefix and file suffix, number patches when --outputting more than one patch, add "To" or "Cc:" headers, configure -+outputting more than one patch, add "To:" or "Cc:" headers, configure - attachments, and sign off patches with configuration variables. - - ------------ -@@ + inferCoverSubject = true ------------ - In addition, for a specific branch, you can specify a custom cover --letter subject. ++In addition, for a specific branch, you can specify a custom cover +letter subject, and add additional "To:" or "Cc:" headers. - - ------------ - [format "branch-name"] - coverSubject = "subject for branch-name only" ++ ++------------ ++[format "branch-name"] + to = <email> + cc = <email> - ------------ ++------------ DISCUSSION + ---------- diff --git a/builtin/log.c b/builtin/log.c --- a/builtin/log.c @@ -96,7 +87,7 @@ static void add_header(const char *value) { @@ - return 0; + fprintf(rev->diffopt.file, "\n"); } +static void add_branch_headers(struct rev_info *rev, const char *branch_name) @@ -186,25 +177,6 @@ strbuf_addstr(&buf, extra_hdr.items[i].string); strbuf_addch(&buf, '\n'); - diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh - --- a/t/t3200-branch.sh - +++ b/t/t3200-branch.sh -@@ - - test_expect_success 'test deleting branch deletes branch config' ' - git config format.my7.coverSubject "cover subject" && -+ git config format.my7.to "To Me <to@xxxxxxxxxxx>" && -+ git config format.my7.cc "Cc Me <cc@xxxxxxxxxxx>" && - git branch -d my7 && - test -z "$(git config branch.my7.remote)" && - test -z "$(git config branch.my7.merge)" && - test -z "$(git config format.my7.coverSubject)" -+ test -z "$(git config format.my7.to)" && -+ test -z "$(git config format.my7.cc)" - ' - - test_expect_success 'test deleting branch without config' ' - diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh -: ---------- > 7: 70e28c5472 format-patch: move output_directory logic later -: ---------- > 8: b23c3c16f7 format-patch: read branch-specific output directory -- 2.22.0.rc1.169.g49223abbf8