From 2e4ecd03d63268eec0f4045b126aa8cfdb75dee7 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Wed, 13 Dec 2017 09:36:51 +0100 Subject: clang-format: ignore not staged hunks 09:28 <@sberg> vmiklos, I think I ran into a scenario last night where I had both `git add`-ed and non-added changes in a non-blacklisted file, and the non-added changes violated clang-format (and the added ones did not), and the commit hook complained So make sure we validate the index version, not the filesystem one. (And modify a formatted file to trigger CI validation of the hook change itself.) Change-Id: I6431b35ac50dd03741104b5709c5195d6ff28632 Reviewed-on: https://gerrit.libreoffice.org/46368 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- .git-hooks/pre-commit | 3 +-- solenv/clang-format/ClangFormat.pm | 12 ++++++++++-- writerfilter/source/rtftok/rtfdocumentimpl.cxx | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.git-hooks/pre-commit b/.git-hooks/pre-commit index c0464e1c0778..e25532bb0662 100755 --- a/.git-hooks/pre-commit +++ b/.git-hooks/pre-commit @@ -161,8 +161,7 @@ sub check_style($) print("cp clang-format-$version-$platform clang-format\n"); print("chmod +x clang-format\n\n"); - print("(Or read the instructions how to build it yourself at\n"); - print(").\n\n"); + print("(Or read solenv/clang-format/README on how to build it yourself.\n"); return; } if (!ClangFormat::check_style($clang_format, $filename)) diff --git a/solenv/clang-format/ClangFormat.pm b/solenv/clang-format/ClangFormat.pm index 1ec19ada2466..024fe7c1f87f 100644 --- a/solenv/clang-format/ClangFormat.pm +++ b/solenv/clang-format/ClangFormat.pm @@ -91,11 +91,19 @@ sub find() return $clang_format; } -# Diffs the original and the formatted version of a single file. +# Diffs the original and the formatted version of a single file from the index. sub check_style($$) { + # Make sure that not staged changes are not considered when diffing. my ($clang_format, $filename) = @_; - return system("'$clang_format' $filename | git --no-pager diff --no-index --exit-code $filename -") == 0; + my $index = $filename . ".index"; + system("git show :$filename > $index"); + my $format = $index . ".format"; + system("'$clang_format' -assume-filename=$filename $index > $format"); + my $ret = system("git --no-pager diff --no-index --exit-code $index $format") == 0; + unlink($index); + unlink($format); + return $ret; } # Private functions. diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 3cd40f81d9c6..081efdca95cc 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -3140,7 +3140,7 @@ RTFError RTFDocumentImpl::popState() { if (m_aStates.top().eDestination == Destination::LISTOVERRIDEENTRY) { - // copy properties upwards so upper popState inserts it + // copy properties upwards so upper popState() inserts it m_aStates.top().aTableAttributes = aState.aTableAttributes; m_aStates.top().aTableSprms = aState.aTableSprms; } -- cgit