diff --git a/Documentation/git-format-patch.adoc b/Documentation/git-format-patch.adoc index 31fa492335..45ca72e670 100644 --- a/Documentation/git-format-patch.adoc +++ b/Documentation/git-format-patch.adoc @@ -24,7 +24,7 @@ SYNOPSIS [(--reroll-count|-v) ] [--to=] [--cc=] [--[no-]cover-letter] [--quiet] - [--cover-letter-format=] + [--commit-list-format=] [--[no-]encode-email-headers] [--no-notes | --notes[=]] [--interdiff=] @@ -323,16 +323,15 @@ feeding the result to `git send-email`. containing the branch description, shortlog and the overall diffstat. You can fill in a description in the file before sending it out. ---cover-letter-format=:: - Specify the format in which to generate the commit list of the - patch series. This option is available if the user wants to use - an alternative to the default `shortlog` format. The accepted - values for format-spec are "shortlog" or a format string - prefixed with `log:`. +--commit-list-format=:: + Specify the format in which to generate the commit list of the patch + series. The accepted values for format-spec are "shortlog" or a format + string prefixed with `log:`. e.g. `log: %s (%an)` - If defined, defaults to the `format.commitListFormat` configuration + If not given, defaults to the `format.commitListFormat` configuration variable. - This option is relevant only if a cover letter is generated. + This option implies the use of `--cover-letter` unless + `--no-cover-letter` is given. --encode-email-headers:: --no-encode-email-headers:: diff --git a/builtin/log.c b/builtin/log.c index 997bdd608e..a7f129d583 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -2014,7 +2014,7 @@ int cmd_format_patch(int argc, N_("print patches to standard out")), OPT_BOOL(0, "cover-letter", &cover_letter, N_("generate a cover letter")), - OPT_STRING(0, "cover-letter-format", &cover_letter_fmt, N_("format-spec"), + OPT_STRING(0, "commit-list-format", &cover_letter_fmt, N_("format-spec"), N_("format spec used for the commit list in the cover letter")), OPT_BOOL(0, "numbered-files", &just_numbers, N_("use simple number sequence for output file names")), @@ -2358,6 +2358,8 @@ int cmd_format_patch(int argc, cover_letter_fmt = cfg.fmt_cover_letter_commit_list; if (!cover_letter_fmt) cover_letter_fmt = "shortlog"; + } else if (cover_letter == -1) { + cover_letter = 1; } if (cover_letter == -1) { diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 7c67bdf922..d2a775f78d 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -383,49 +383,50 @@ test_expect_success 'filename limit applies only to basename' ' test_expect_success 'cover letter with subject, author and count' ' rm -rf patches && test_when_finished "git reset --hard HEAD~1" && - test_when_finished "rm -rf patches result test_file" && + test_when_finished "rm -rf patches test_file" && touch test_file && git add test_file && git commit -m "This is a subject" && - git format-patch --cover-letter \ - --cover-letter-format="log:[%(count)/%(total)] %s (%an)" -o patches HEAD~1 && - grep "^\[1/1\] This is a subject (A U Thor)$" patches/0000-cover-letter.patch >result && - test_line_count = 1 result + git format-patch --commit-list-format="log:[%(count)/%(total)] %s (%an)" \ + -o patches HEAD~1 && + test_grep "^\[1/1\] This is a subject (A U Thor)$" patches/0000-cover-letter.patch ' -test_expected_success 'cover letter with author and count' ' +test_expect_success 'cover letter with author and count' ' test_when_finished "git reset --hard HEAD~1" && - test_when_finished "rm -rf patches result test_file" && + test_when_finished "rm -rf patches test_file" && touch test_file && git add test_file && git commit -m "This is a subject" && - git format-patch --cover-letter \ - --cover-letter-format="log:[%(count)/%(total)] %an" -o patches HEAD~1 && - grep "^\[1/1\] A U Thor$" patches/0000-cover-letter.patch >result && - test_line_count = 1 result + git format-patch --commit-list-format="log:[%(count)/%(total)] %an" \ + -o patches HEAD~1 && + test_grep "^\[1/1\] A U Thor$" patches/0000-cover-letter.patch ' test_expect_success 'cover letter shortlog' ' test_when_finished "git reset --hard HEAD~1" && - test_when_finished "rm -rf patches result test_file" && + test_when_finished "rm -rf expect patches result test_file" && + cat >expect <<-"EOF" && + A U Thor (1): + This is a subject + EOF touch test_file && git add test_file && git commit -m "This is a subject" && - git format-patch --cover-letter --cover-letter-format=shortlog \ - -o patches HEAD~1 && - sed -n -e "/^A U Thor/p;" patches/0000-cover-letter.patch >result && - test_line_count = 1 result + git format-patch --commit-list-format=shortlog -o patches HEAD~1 && + grep -E -A 1 "^A U Thor \([[:digit:]]+\):$" patches/0000-cover-letter.patch >result && + cat result && + test_cmp expect result ' -test_expect_success 'cover letter no format' ' +test_expect_success 'no cover letter but with format specified' ' test_when_finished "git reset --hard HEAD~1" && test_when_finished "rm -rf patches result test_file" && touch test_file && git add test_file && git commit -m "This is a subject" && - git format-patch --cover-letter -o patches HEAD~1 && - sed -n -e "/^A U Thor/p;" patches/0000-cover-letter.patch >result && - test_line_count = 1 result + git format-patch --no-cover-letter --commit-list-format="[%(count)] %s" -o patches HEAD~1 && + test_path_is_missing patches/0000-cover-letter.patch ' test_expect_success 'cover letter config with count, subject and author' ' diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 35e20b5351..2f9a597ec7 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -2775,7 +2775,6 @@ test_expect_success PERL 'send-email' ' test_completion "git send-email --cov" <<-\EOF && --cover-from-description=Z --cover-letter Z - --cover-letter-format=Z EOF test_completion "git send-email --val" <<-\EOF && --validate Z