From 53e13b256fa5082eb29ea2addd1bfa184827e53b Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 13 Nov 2017 09:08:30 +0100 Subject: clang-format: standardize on 5.0.0 Restrict the git hook further to only enforce style in case the found clang-format binary's version matches to avoid output differences with different clang-format version. While at it, move the blacklist reading after the version check to speed up committing a bit when no local enforcement happens. Also add a simple script to list formatted files, since the blacklist is large enough that doing it naively from the shell is too slow. Change-Id: I0bc05961d262cc6bc91c6efdd1b91994ecfc6940 Reviewed-on: https://gerrit.libreoffice.org/44662 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- .git-hooks/pre-commit | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to '.git-hooks') diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit index b40ad6f004d9..3743f6b79d6c 100755 --- a/.git-hooks/pre-commit +++ b/.git-hooks/pre-commit @@ -108,6 +108,18 @@ sub check_whitespaces($) } } +# Is this binary the version we standardize on? +sub is_matching_clang_format_version($$) +{ + my ($clang_format, $version) = @_; + if (! -x $clang_format) + { + return 0; + } + + return `$clang_format -version` =~ /^clang-format version $version \(tags/; +} + sub check_style($) { my ($h) = @_; @@ -119,35 +131,25 @@ sub check_style($) # directory. my $opt_lo = "/opt/lo/bin"; my $clang_format = "$opt_lo/clang-format"; - if (! -x $clang_format) + my $version = "5.0.0"; + if (!is_matching_clang_format_version($clang_format, $version)) { foreach my $dir (split /:/, $ENV{PATH}) { $clang_format = "$dir/clang-format"; - if (-x $clang_format) + if (is_matching_clang_format_version($clang_format, $version)) { last; } } } - # Read the blacklist. - if (open(LINES, "solenv/clang-format/blacklist")) - { - while (my $line = ) - { - chomp $line; - $blacklist_names{$line} = 1; - } - } - # Check if clang-format is installed. if (! -x $clang_format) { # As a first step, don't do any checks in this case. return; - my $version = "r302580"; my $platform = "linux64"; my $download = "wget"; if ($^O eq "cygwin") @@ -170,6 +172,16 @@ sub check_style($) exit(1); } + # Read the blacklist. + if (open(LINES, "solenv/clang-format/blacklist")) + { + while (my $line = ) + { + chomp $line; + $blacklist_names{$line} = 1; + } + } + if ($^O eq "cygwin") { $clang_format = `cygpath -m $clang_format`; -- cgit