diff options
-rwxr-xr-x | git-hooks/pre-commit | 106 |
1 files changed, 60 insertions, 46 deletions
diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit index 495dc169aea8..5b752a307a11 100755 --- a/git-hooks/pre-commit +++ b/git-hooks/pre-commit @@ -21,57 +21,70 @@ sub check_whitespaces($) my $filename; my $reported_filename = ""; my $lineno; - sub bad_line { - my ($why, $line, $file_filter) = @_; - if (!defined $file_filter || $filename =~ /\.($file_filter)$/) { - if (!$found_bad) { - print STDERR "*\n"; - print STDERR "* You have some suspicious patch lines:\n"; - print STDERR "*\n"; - $found_bad = 1; - } - if ($reported_filename ne $filename) { - print STDERR "* In $filename\n"; - $reported_filename = $filename; - } - print STDERR "* $why (line $lineno)\n"; - print STDERR "$filename:$lineno:$line\n"; + sub bad_line + { + my ($why, $line, $file_filter) = @_; + if (!defined $file_filter || $filename =~ /\.($file_filter)$/) + { + if (!$found_bad) + { + print STDERR "*\n"; + print STDERR "* You have some suspicious patch lines:\n"; + print STDERR "*\n"; + $found_bad = 1; + } + if ($reported_filename ne $filename) + { + print STDERR "* In $filename\n"; + $reported_filename = $filename; + } + print STDERR "* $why (line $lineno)\n"; + print STDERR "$filename:$lineno:$line\n"; } } open( FILES, "git-diff-index -p -M --cached $h |" ) || die "Cannot run git diff-index."; - while (<FILES>) { - if (m|^diff --git a/(.*) b/\1$|) { - $filename = $1; - next; - } - if (/^@@ -\S+ \+(\d+)/) { - $lineno = $1 - 1; - next; - } - if (/^ /) { - $lineno++; - next; - } - if (s/^\+//) { - $lineno++; - chomp; - if (/\s$/) { - bad_line("trailing whitespace", $_ , $src_limited); - } - if (/^\s* /) { - bad_line("indent SP followed by a TAB", $_, $src_limited); - } - if (/^(?:[<>=]){7}$/) { - bad_line("unresolved merge conflict", $src_full); - } - if (/SAL_DEBUG/) { - bad_line("temporary debug in commit", $_, $src_limited); - } - } + while (<FILES>) + { + if (m|^diff --git a/(.*) b/\1$|) + { + $filename = $1; + next; + } + if (/^@@ -\S+ \+(\d+)/) + { + $lineno = $1 - 1; + next; + } + if (/^ /) + { + $lineno++; + next; + } + if (s/^\+//) + { + $lineno++; + chomp; + if (/\s$/) + { + bad_line("trailing whitespace", $_ , $src_limited); + } + if (/\s* /) + { + bad_line("indent with Tab", $_, $src_limited); + } + if (/^(?:[<>=]){7}$/) + { + bad_line("unresolved merge conflict", $src_full); + } + if (/SAL_DEBUG/) + { + bad_line("temporary debug in commit", $_, $src_limited); + } + } } if ( $found_bad) { - exit($found_bad); + exit($found_bad); } } @@ -79,7 +92,8 @@ sub check_whitespaces($) # Initial commit: diff against an empty tree object my $against="4b825dc642cb6eb9a060e54bf8d69288fbee4904"; -if ( system( "git rev-parse --verify HEAD >/dev/null 2>&1" ) == 0 ) { +if ( system( "git rev-parse --verify HEAD >/dev/null 2>&1" ) == 0 ) +{ $against="HEAD" } |