41 lines
1.0 KiB
Perl
Executable File
41 lines
1.0 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
use strict;
|
|
use warnings;
|
|
|
|
# gitolite VREF to check max size of new binary files
|
|
|
|
# see gitolite docs for what the first 7 arguments mean
|
|
|
|
# inputs:
|
|
# arg-8 is a number
|
|
# outputs (STDOUT)
|
|
# arg-7 if any new binary files exist that are greater in size than arg-8
|
|
# *and* there is no "signed-off by" line for such a file in the top commit
|
|
# message.
|
|
#
|
|
# Otherwise nothing
|
|
# exit status:
|
|
# always 0
|
|
|
|
die "not meant to be run manually" unless $ARGV[7];
|
|
|
|
my ( $newsha, $oldtree, $newtree, $refex, $max ) = @ARGV[ 2, 3, 4, 6, 7 ];
|
|
|
|
# / (.*) +\| Bin 0 -> (\d+) bytes/
|
|
|
|
chomp( my $author_email = `git log --format=%ae -1 $newsha` );
|
|
my $msg = `git cat-file -p $newsha`;
|
|
$msg =~ s/\t/ /g; # makes our regexes simpler
|
|
|
|
for my $newbin (`git diff --stat=999,999 $oldtree $newtree | grep Bin.0.-`) {
|
|
next unless $newbin =~ /^ (.*) +\| +Bin 0 -> (\d+) bytes/;
|
|
my ( $f, $s ) = ( $1, $2 );
|
|
next if $s <= $max;
|
|
|
|
next if $msg =~ /^ *$f +signed-off by: *$author_email *$/mi;
|
|
|
|
print "$refex $f is larger than $max";
|
|
}
|
|
|
|
exit 0
|