Re: [RFC-PATCH v2 2/2] send-email: quote-email quotes the message body
From: Tom Russello <hidden>
Date: 2016-06-16 02:19:38
On 05/28/16 17:01, Matthieu Moy wrote:
quoted
Currently, `send-email` without `--compose` implies `--annotate`.I don't get it. Did you mean s/without/with/? Even if so, this is not exactly true: "git send-email --compose -1" will open the editor only for the cover-letter, while adding --annotate will also open it for the patch.
We meant that the default behavior of `--quote-email` (i.e. without --compose enabled) will open the editor with the given patches in argument and will quote the message body in the first one.
(Note: we discussed this off-list already, but I'll try to summarize my thoughts here) I don't have strong opinion on this, but I think there's a difference between launching the editor directly on the input patch files (resulting in _user_'s edit being done directly on them) and having the script modify it in-place (resulting in automatic changes done directly on the user's files). I usually use "git send-email" directly without using "git format-patch", so I'm not the best juge. But I can imagine a flow like 1) run "git send-email *.patch" 2) start editting 3) notice there's something wrong, give up for now (answer 'q' when git send-email prompts for confirmation, or kill it via Control-C in a terminal) 4) run "git send-email *.patch" again 5) be happy that changes done at 2) are still there. With --quote-email, it's different. The scenario above would result in 5') WTF, why is the email quoted twice?
Actually the Control-C during the edition will cancel all the annotations written (including the cited email).
Unfortunately, I don't really have a solution for this. My first thought was that we should copy the files to a temporary location before starting the editor (that what I'm used to when using "git send-email" without "git format-patch"), but that would prevent 5) above.
It's already what we did: the first original patch is copied in a temporary file. However, if the edition went well (i.e. the editor closed by the user), the temporary file will erase the original one.
quoted
@@ -109,7 +109,10 @@ is not set, this will be prompted for. --quote-email=<email_file>:: Reply to the given email and automatically populate the "To:",
"Cc:" and
quoted
"In-Reply-To:" fields. If `--compose` is set, this will also fill the - subject field with "Re: [<email_file>'s subject]". + subject field with "Re: [<email_file>'s subject]" and quote the
message body
quoted
+ of <email_file>.I'd add "in the introductory message".
Agreed.
quoted
+ while (<$fh>) { + # Only for files containing crlf line endings + s/\r//g;The comment doesn't really say what it does. What about "turn crlf line endings into lf-only"?
Yes, I completely agree this suggestion.
When writing comment, always try to ask the question "why?" more than "what?". This part is possibly controversial, think about a contributor finding this piece of code later without having followed the current conversation. He'd probably expect an explanation about why you need a temp file here and not elsewhere.
Thank you for the advice, I'll keep it in mind.
quoted
+ open my $c, "<", $original_file + or die "Failed to open $original_file : " . $!; + + open my $c2, ">", $tmp_file + or die "Failed to open $tmp_file : " . $!;No space before :.
Sorry, I copied the previous error messages.
When the spec says "if --compose ... then ...", "after the triple-dash", and "in the first patch", one would expect at least one test with --compose and one without, something to check that the insertion was done below the triple-dash, and one test with two patches, checking that the second patch is not altered by --quote-email.
Yes, indeed. I'll add these tests in the next version. Thank you for the review.