diff options
author | Jeff King <peff@peff.net> | 2008-01-18 09:19:48 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-01-18 13:33:08 -0800 |
commit | 747bbff9b9583642cd8702b7b559757a6960df00 (patch) | |
tree | b00757318b8102bb626a1ccaf33aca93534d1405 /git-send-email.perl | |
parent | aa54892f5ada8282643dc7387b33261c7135d784 (diff) | |
download | git-747bbff9b9583642cd8702b7b559757a6960df00.tar.gz |
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>
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 7a86977ef1..4e62c3f0e7 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -332,6 +332,11 @@ for my $f (@ARGV) { } } +foreach my $f (@files) { + my $error = validate_patch($f); + $error and die "fatal: $f: $error\nwarning: no patches were sent\n"; +} + if (@files) { unless ($quiet) { print $_,"\n" for (@files); @@ -837,3 +842,15 @@ sub unique_email_list(@) { } 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; +} |