Re: Make git-send-email detect mbox-style patches more readily
- From
Junio C Hamano <junkio@cox.net>
- Date
- Oct 7, 2006, 10:09 UTC
- Message-ID
- <7vy7rssaim.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <20061006202414.GR2563@parisc-linux.org>
Matthew Wilcox <matthew@wil.cx> writes:
Show 8 quoted lines
> Earlier today, I embarrassed myself by trying to construct a patch that > git-send-email would send, and I missed out the putting > > From garbage > > line on the front, which led it to send the patches with a > Subject: From: Matthew Wilcox <matthew@wil.cx> > line. Bad.
I do not mind this patch per-se, but what do you prepare your patch with? Straight "diff -pu" between two directories? quilt?
Since the command deals with two formats (mbox and "send lots of email"), I am wondering if it would be bettern to loosen the regexp you used further to catch something like this:
/^[-A-Za-z]+:\s/
The reason why I suspect it would be better to do this loosening is because I've queued the patch I did yesterday for Len to allow the prepared patch file to contain custom header fields, not just the set of headers hardcoded in the send-email script.
The second line in the "send lots of email" format is e-mail subject, and it is conceivable that would match the above pattern, so this may not be workable, though.
Maybe something like this?
diff --git a/git-send-email.perl b/git-send-email.perl index 3f50aba..ed8652c 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -472,15 +472,21 @@ foreach my $t (@files) { my $author_not_sender = undef; @cc = @initial_cc; - my $found_mbox = 0; + my $input_format = undef; my $header_done = 0; $message = ""; while(<F>) { if (!$header_done) { - $found_mbox = 1, next if (/^From /); + if (/^From /) { + $input_format = 'mbox'; + next; + } chomp; + if (!defined $input_format && /^[-A-Za-z]+:\s/) { + $input_format = 'mbox'; + } - if ($found_mbox) { + if (defined $input_format && $input_format eq 'mbox') { if (/^Subject:\s+(.*)$/) { $subject = $1; @@ -502,6 +508,7 @@ foreach my $t (@files) { # line 1 = cc # line 2 = subject # So let's support that, too. + $input_format = 'lots'; if (@cc == 0) { printf("(non-mbox) Adding cc: %s from line '%s'\n", $_, $_) unless $quiet;