On 12/10/2023 12:27, Ben Dooks wrote:
Adding an option to automatically compose a cover letter would be
helpful to put the whole process of sending an series with a cover
into one command.
Signed-off-by: Ben Dooks <ben.dooks@xxxxxxxxxxxxxxx>
---
Documentation/git-send-email.txt | 5 +++++
git-send-email.perl | 11 ++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 41cd8cb424..f299732867 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -78,6 +78,11 @@ Missing From or In-Reply-To headers will be prompted for.
+
See the CONFIGURATION section for `sendemail.multiEdit`.
+--compose-cover::
+ Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1])
+ to edit a cover letter generated by passing --cover-letter to
+ git-send-email before invoking the editor.
+
OOPS, clearly meant git-format-patch here, not git-send-email.
--from=<address>::
Specify the sender of the emails. If not specified on the command line,
the value of the `sendemail.from` configuration option is used. If
diff --git a/git-send-email.perl b/git-send-email.perl
index 5861e99a6e..debec088f6 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -54,6 +54,7 @@ sub usage {
--in-reply-to <str> * Email "In-Reply-To:"
--[no-]xmailer * Add "X-Mailer:" header (default).
--[no-]annotate * Review each patch that will be sent in an editor.
+ --compose-cover * Open an editor on format-patch --cover-letter
--compose * Open an editor for introduction.
--compose-encoding <str> * Encoding to assume for introduction.
--8bit-encoding <str> * Encoding to assume 8bit mails if undeclared
@@ -199,7 +200,7 @@ sub format_2822_time {
# Variables we fill in automatically, or via prompting:
my (@to,@cc,@xh,$envelope_sender,
$initial_in_reply_to,$reply_to,$initial_subject,@files,
- $author,$sender,$smtp_authpass,$annotate,$compose,$time);
+ $author,$sender,$smtp_authpass,$annotate,$compose_cover,$compose,$time);
# Things we either get from config, *or* are overridden on the
# command-line.
my ($no_cc, $no_to, $no_bcc, $no_identity);
@@ -512,6 +513,7 @@ sub config_regexp {
"no-smtp-auth" => sub {$smtp_auth = 'none'},
"annotate!" => \$annotate,
"no-annotate" => sub {$annotate = 0},
+ "compose-cover" => \$compose_cover,
"compose" => \$compose,
"quiet" => \$quiet,
"cc-cmd=s" => \$cc_cmd,
@@ -782,6 +784,9 @@ sub is_format_patch_arg {
die __("Cannot run git format-patch from outside a repository\n")
unless $repo;
require File::Temp;
+ if ($compose_cover) {
+ push @rev_list_opts, "--cover-letter";
+ }
push @files, $repo->command('format-patch', '-o', File::Temp::tempdir(CLEANUP => 1), @rev_list_opts);
}
@@ -854,6 +859,8 @@ sub get_patch_subject {
if ($annotate) {
do_edit($compose_filename, @files);
+ } elsif ($compose_cover) {
+ do_edit($files[0]);
} else {
do_edit($compose_filename);
}
@@ -927,6 +934,8 @@ sub get_patch_subject {
} elsif ($annotate) {
do_edit(@files);
+} elsif ($compose_cover) {
+ do_edit($files[0]);
}
sub term {
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html