diff options
Diffstat (limited to 'src/build/tools/pre-receive')
-rwxr-xr-x | src/build/tools/pre-receive | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/build/tools/pre-receive b/src/build/tools/pre-receive new file mode 100755 index 000000000..60b07d4ed --- /dev/null +++ b/src/build/tools/pre-receive @@ -0,0 +1,89 @@ +#!/usr/bin/perl +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/build/tools/pre-receive $ +# +# IBM CONFIDENTIAL +# +# COPYRIGHT International Business Machines Corp. 2011 +# +# p1 +# +# Object Code Only (OCO) source materials +# Licensed Internal Code Source Materials +# IBM HostBoot Licensed Internal Code +# +# The source code for this program is not published or other- +# wise divested of its trade secrets, irrespective of what has +# been deposited with the U.S. Copyright Office. +# +# Origin: 30 +# +# IBM_PROLOG_END + +# +# From "git help githooks" : +# "This hook executes once for the receive operation. It takes no arguments, +# but for each ref to be updated it receives on standard input a line of +# the format: +# +# <old-value> SP <new-value> SP <ref-name> LF +# +# where <old-value> is the old object name stored in the ref, +# <new-value> is the new object name to be stored in the ref, +# and <ref-name> is the full name of the ref. +# When creating a new ref, <old-value> is 40 0." +# + +$COPYRIGHT_SCRIPT=".git/hooks/addCopyright.pl"; + +print "Processing pre-receive script\n"; + +while (<STDIN>) +{ + my $refsLine = $_; + if ($refsLine =~ /([0-9a-f]*) ([0-9a-f]*) (.*)/) + { + my ($oldRef, $newRef, $refName) = ($1, $2, $3); + print "$oldRef, $newRef, $refName\n"; + + my @diffTreeList = split('\n', `git diff-tree -r --diff-filter=AM $newRef $oldRef`); + foreach my $diffTreeLine (@diffTreeList) + { + #print "$diffTreeLine\n"; + if ($diffTreeLine =~ m/^:\d*\s*\d*\s*(\S*)\s*(\S*)\s*(\S*)\s*(\S*)/) + { + my ($diffNewRef, $diffOldRef, $type, $name) = ($1, $2, $3, $4); + my $namePart = $name; + if ($name =~ m/\/([^\/]*)$/) + { + $namePart = $1; + } + + if ($diffNewRef != 0) + { + my $tmpName = "/tmp/git_$<_$diffNewRef"."_$namePart"; + + system("git show $diffNewRef > $tmpName"); + if ($? != 0) + { + print "Unable to git show $diffNewRef on file $name type $type\n"; + exit 1; + } + # system("/gsa/rchgsa/projects/p/powerhal/tools/addCopyright.pl validate $tmpName"); + system( "$COPYRIGHT_SCRIPT validate $tmpname" ); + if ($? != 0) + { + print "File $name does not have a correct prolog\n"; + system("rm -f $tmpName"); + exit 1; + } + system("rm -f $tmpName"); + } + } + } + } +} + +exit 0; |