git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] send-email: add --compose-cover option
@ 2023-10-12 11:27 Ben Dooks
  2023-10-12 13:07 ` Ben Dooks
  2023-10-12 20:03 ` Kristoffer Haugsbakk
  0 siblings, 2 replies; 5+ messages in thread
From: Ben Dooks @ 2023-10-12 11:27 UTC (permalink / raw)
  To: git, gitster; +Cc: Ben Dooks

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@codethink.co.uk>
---
 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.
+
 --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 {
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] send-email: add --compose-cover option
  2023-10-12 11:27 [PATCH] send-email: add --compose-cover option Ben Dooks
@ 2023-10-12 13:07 ` Ben Dooks
  2023-10-12 20:03 ` Kristoffer Haugsbakk
  1 sibling, 0 replies; 5+ messages in thread
From: Ben Dooks @ 2023-10-12 13:07 UTC (permalink / raw)
  To: git, gitster

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@codethink.co.uk>
> ---
>   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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] send-email: add --compose-cover option
  2023-10-12 11:27 [PATCH] send-email: add --compose-cover option Ben Dooks
  2023-10-12 13:07 ` Ben Dooks
@ 2023-10-12 20:03 ` Kristoffer Haugsbakk
  2023-10-12 20:31   ` Junio C Hamano
  1 sibling, 1 reply; 5+ messages in thread
From: Kristoffer Haugsbakk @ 2023-10-12 20:03 UTC (permalink / raw)
  To: Ben Dooks; +Cc: git, Junio C Hamano

Hi Ben

On Thu, Oct 12, 2023, at 13: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.

I didn't manage to apply the patch so I haven't tried it out. Some
questions:

1. There is already `--compose` which is clearly different. What's the
   difference between a cover letter an an introduction? That's a more
   immediate question now with two similar-looking options.
2. This would be really useful in `format-patch`. One could write the
   cover letter immediately instead of either (1) editing the generated
   one (placeholders) or (2) providing a file.
   - Personally I don't use `send-email` immediately—I use `format-patch`
     to generate everything so that I can review it before any
     sending. But there are many different workflows.
3. Does this editor only deal with the subject and the message part before
   the diffstat and all the auto-generated stuff? And then it applies it
   after the user closes the editor (to make the complete cover letter)?

-- 
Kristoffer Haugsbakk

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] send-email: add --compose-cover option
  2023-10-12 20:03 ` Kristoffer Haugsbakk
@ 2023-10-12 20:31   ` Junio C Hamano
  2023-10-12 20:48     ` Kristoffer Haugsbakk
  0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2023-10-12 20:31 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: Ben Dooks, git

"Kristoffer Haugsbakk" <code@khaugsbakk.name> writes:

> 2. This would be really useful in `format-patch`. One could write the
>    cover letter immediately instead of either (1) editing the generated
>    one (placeholders) or (2) providing a file.
>    - Personally I don't use `send-email` immediately—I use `format-patch`
>      to generate everything so that I can review it before any
>      sending. But there are many different workflows.

Hmph, I am not sure why a format-patch user would bother with the
"--compose-cover" option for the cover letter, to be honest.  I am a
format-patch user and never drive it from send-email, just like the
workflow you use, and the norm to me is to review everything, not
just the cover letter but also the patches, in my editor session.
You apparently do not need "--edit-patches" option to review and
adjust as needed before sending, even though that is what you do
already.  Why do you need a "--compose-cover" option?



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] send-email: add --compose-cover option
  2023-10-12 20:31   ` Junio C Hamano
@ 2023-10-12 20:48     ` Kristoffer Haugsbakk
  0 siblings, 0 replies; 5+ messages in thread
From: Kristoffer Haugsbakk @ 2023-10-12 20:48 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Ben Dooks, git

On Thu, Oct 12, 2023, at 22:31, Junio C Hamano wrote:
> Hmph, I am not sure why a format-patch user would bother with the
> "--compose-cover" option for the cover letter, to be honest.  I am a
> format-patch user and never drive it from send-email, just like the
> workflow you use, and the norm to me is to review everything, not
> just the cover letter but also the patches, in my editor session.
> You apparently do not need "--edit-patches" option to review and
> adjust as needed before sending, even though that is what you do
> already.  Why do you need a "--compose-cover" option?

The thought was to get an interactive editor session for the subject and
the message and let `format-patch` fill in the range-diff etc., but on
second thought I have to do so many edits (fix mistakes and use the cover
letter in later versions) that an interactive session would probably not
be useful for me, after all. If so I would probably need to use some tool
that makes cover-letter a first-class entity that you can edit multiple
times similar to a commit message, like `git-series` (I'm guessing that's
how it works?).

The upcoming `--description-file`[1] is probably what I'm gonna end up
using.

[1] https://lore.kernel.org/git/20230821170720.577820-1-oswald.buddenhagen@gmx.de/

-- 
Kristoffer Haugsbakk

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-10-12 20:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-12 11:27 [PATCH] send-email: add --compose-cover option Ben Dooks
2023-10-12 13:07 ` Ben Dooks
2023-10-12 20:03 ` Kristoffer Haugsbakk
2023-10-12 20:31   ` Junio C Hamano
2023-10-12 20:48     ` Kristoffer Haugsbakk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).