summaryrefslogtreecommitdiff
path: root/git-send-email.perl
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2008-01-18 14:19:48 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-01-18 21:33:08 (GMT)
commit747bbff9b9583642cd8702b7b559757a6960df00 (patch)
treeb00757318b8102bb626a1ccaf33aca93534d1405 /git-send-email.perl
parentaa54892f5ada8282643dc7387b33261c7135d784 (diff)
downloadgit-747bbff9b9583642cd8702b7b559757a6960df00.zip
git-747bbff9b9583642cd8702b7b559757a6960df00.tar.gz
git-747bbff9b9583642cd8702b7b559757a6960df00.tar.bz2
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-xgit-send-email.perl17
1 files changed, 17 insertions, 0 deletions
diff --git a/git-send-email.perl b/git-send-email.perl
index 7a86977..4e62c3f 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;
+}