diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..4a447eaa8 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# _clang_format added +19d98d6a74079a42bcc5cb0e899d239a4bdb6e20 diff --git a/README.clang-format b/README.clang-format new file mode 100644 index 000000000..3b1a93b5b --- /dev/null +++ b/README.clang-format @@ -0,0 +1,14 @@ +We introduced clang-format mandatory usage in July 2020. +If you want git blame to ignore the revision in which we did the mass change you can do + git config blame.ignoreRevsFile .git-blame-ignore-revs +on your clone + +To get the clang-format warnings locally instead at CI time we recommend you +to copy the hooks/pre-commit to your .git + cp hooks/pre-commit .git/hooks/ + +We are using clang-format 10 on CI. Unfortunately clang-format is not totally +compatible with older versions of itself. If CI gives you trouble but your local +clang-format disagrees, just apply the changes suggested by CI and then commit +with the --no-verify flag. If you get stuck, don't hesitate to ask the reviewer +to help and they will reformat your commits :) diff --git a/hooks/pre-commit b/hooks/pre-commit new file mode 100755 index 000000000..6337bbbde --- /dev/null +++ b/hooks/pre-commit @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +readonly output=$(git clang-format -v --diff) + +if [[ "$output" == *"no modified files to format"* ]]; then exit 0; fi +if [[ "$output" == *"clang-format did not modify any files"* ]]; then exit 0; fi + +echo "ERROR: you need to run git clang-format on your commit" +echo " git clang-format -f is potentially what you want" +exit 1