mirror of
https://github.com/git/git.git
synced 2024-06-02 05:56:11 +02:00
send-email: validate patches before sending anything
We try to catch errors early so that we don't end up sending half of a broken patch series. Right now the only validation is checking that line-lengths are under the SMTP-mandated limit of 998. The validation parsing is very crude (it just checks each line length without understanding the mailbox format) but should work fine for this simple check. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
aa54892f5a
commit
747bbff9b9
|
@ -332,6 +332,11 @@ sub read_config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach my $f (@files) {
|
||||||
|
my $error = validate_patch($f);
|
||||||
|
$error and die "fatal: $f: $error\nwarning: no patches were sent\n";
|
||||||
|
}
|
||||||
|
|
||||||
if (@files) {
|
if (@files) {
|
||||||
unless ($quiet) {
|
unless ($quiet) {
|
||||||
print $_,"\n" for (@files);
|
print $_,"\n" for (@files);
|
||||||
|
@ -837,3 +842,15 @@ (@)
|
||||||
}
|
}
|
||||||
return @emails;
|
return @emails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub validate_patch {
|
||||||
|
my $fn = shift;
|
||||||
|
open(my $fh, '<', $fn)
|
||||||
|
or die "unable to open $fn: $!\n";
|
||||||
|
while (my $line = <$fh>) {
|
||||||
|
if (length($line) > 998) {
|
||||||
|
return "$.: patch contains a line longer than 998 characters";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
|
@ -78,4 +78,24 @@ test_expect_success 'Show all headers' '
|
||||||
diff -u expected-show-all-headers actual-show-all-headers
|
diff -u expected-show-all-headers actual-show-all-headers
|
||||||
'
|
'
|
||||||
|
|
||||||
|
z8=zzzzzzzz
|
||||||
|
z64=$z8$z8$z8$z8$z8$z8$z8$z8
|
||||||
|
z512=$z64$z64$z64$z64$z64$z64$z64$z64
|
||||||
|
test_expect_success 'reject long lines' '
|
||||||
|
rm -f commandline &&
|
||||||
|
cp $patches longline.patch &&
|
||||||
|
echo $z512$z512 >>longline.patch &&
|
||||||
|
! git send-email \
|
||||||
|
--from="Example <nobody@example.com>" \
|
||||||
|
--to=nobody@example.com \
|
||||||
|
--smtp-server="$(pwd)/fake.sendmail" \
|
||||||
|
$patches longline.patch \
|
||||||
|
2>errors &&
|
||||||
|
grep longline.patch errors
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'no patch was sent' '
|
||||||
|
! test -e commandline
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue