|
0
|
1 |
#!/bin/sh
|
|
|
2 |
#
|
|
|
3 |
# An example hook script to verify what is about to be committed.
|
|
|
4 |
# Called by git-commit with no arguments. The hook should
|
|
|
5 |
# exit with non-zero status after issuing an appropriate message if
|
|
|
6 |
# it wants to stop the commit.
|
|
|
7 |
#
|
|
|
8 |
# To enable this hook, make this file executable.
|
|
|
9 |
|
|
|
10 |
# This is slightly modified from Andrew Morton's Perfect Patch.
|
|
|
11 |
# Lines you introduce should not have trailing whitespace.
|
|
|
12 |
# Also check for an indentation that has SP before a TAB.
|
|
|
13 |
|
|
|
14 |
if git-rev-parse --verify HEAD 2>/dev/null
|
|
|
15 |
then
|
|
|
16 |
git-diff-index -p -M --cached HEAD --
|
|
|
17 |
else
|
|
|
18 |
# NEEDSWORK: we should produce a diff with an empty tree here
|
|
|
19 |
# if we want to do the same verification for the initial import.
|
|
|
20 |
:
|
|
|
21 |
fi |
|
|
|
22 |
perl -e '
|
|
|
23 |
my $found_bad = 0;
|
|
|
24 |
my $filename;
|
|
|
25 |
my $reported_filename = "";
|
|
|
26 |
my $lineno;
|
|
|
27 |
sub bad_line {
|
|
|
28 |
my ($why, $line) = @_;
|
|
|
29 |
if (!$found_bad) {
|
|
|
30 |
print STDERR "*\n";
|
|
|
31 |
print STDERR "* You have some suspicious patch lines:\n";
|
|
|
32 |
print STDERR "*\n";
|
|
|
33 |
$found_bad = 1;
|
|
|
34 |
}
|
|
|
35 |
if ($reported_filename ne $filename) {
|
|
|
36 |
print STDERR "* In $filename\n";
|
|
|
37 |
$reported_filename = $filename;
|
|
|
38 |
}
|
|
|
39 |
print STDERR "* $why (line $lineno)\n";
|
|
|
40 |
print STDERR "$filename:$lineno:$line\n";
|
|
|
41 |
}
|
|
|
42 |
while (<>) {
|
|
|
43 |
if (m|^diff --git a/(.*) b/\1$|) {
|
|
|
44 |
$filename = $1;
|
|
|
45 |
next;
|
|
|
46 |
}
|
|
|
47 |
if (/^@@ -\S+ \+(\d+)/) {
|
|
|
48 |
$lineno = $1 - 1;
|
|
|
49 |
next;
|
|
|
50 |
}
|
|
|
51 |
if (/^ /) {
|
|
|
52 |
$lineno++;
|
|
|
53 |
next;
|
|
|
54 |
}
|
|
|
55 |
if (s/^\+//) {
|
|
|
56 |
$lineno++;
|
|
|
57 |
chomp;
|
|
|
58 |
if (/\s$/) {
|
|
|
59 |
bad_line("trailing whitespace", $_);
|
|
|
60 |
}
|
|
|
61 |
if (/^\s* \t/) {
|
|
|
62 |
bad_line("indent SP followed by a TAB", $_);
|
|
|
63 |
}
|
|
|
64 |
if (/^([<>])\1{6} |^={7}$/) {
|
|
|
65 |
bad_line("unresolved merge conflict", $_);
|
|
|
66 |
}
|
|
|
67 |
}
|
|
|
68 |
}
|
|
|
69 |
exit($found_bad);
|
|
|
70 |
'
|