summaryrefslogtreecommitdiffstats
path: root/src/build/tools/pre-receive
blob: ebc370cd9c49fe034618363351890fe7b63412e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/perl
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
# $Source: src/build/tools/pre-receive $
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 2011,2016
# [+] International Business Machines Corp.
#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied. See the License for the specific language governing
# permissions and limitations under the License.
#
# IBM_PROLOG_END_TAG

#
#   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";

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;
OpenPOWER on IntegriCloud