summaryrefslogtreecommitdiff
path: root/.git-hooks
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-11-13 09:08:30 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-11-13 10:43:39 +0100
commit53e13b256fa5082eb29ea2addd1bfa184827e53b (patch)
tree820c9e5ec61ce4cb1c6713a71aedfd8a0383fa01 /.git-hooks
parent70fa61918415f642228127847491224078532218 (diff)
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 <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to '.git-hooks')
-rwxr-xr-x.git-hooks/pre-commit38
1 files changed, 25 insertions, 13 deletions
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 = <LINES>)
- {
- 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 = <LINES>)
+ {
+ chomp $line;
+ $blacklist_names{$line} = 1;
+ }
+ }
+
if ($^O eq "cygwin")
{
$clang_format = `cygpath -m $clang_format`;