make: add clang-format prepare-commit-msg hook

To install this hook, run
make install-git-commit-clangfmt

This will install a pre-commit-msg hook that runs clang-format
on all .c and .h files that are staged.

It will add a clang-formatted-by: <git username>
line to the commit message to indicate that clang-format
was run on the files and that further processing of them
is not needed.

Change-Id: I1773f55b5b4677dad8f4bea017b6328fd93df20c
Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-on: https://review.coreboot.org/27779
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Ronald G. Minnich 2018-08-01 07:19:31 -07:00
parent b9c049a368
commit ff22b6aca6
2 changed files with 16 additions and 0 deletions

View File

@ -597,6 +597,9 @@ update:
gitconfig: gitconfig:
util/gitconfig/gitconfig.sh "$(MAKE)" util/gitconfig/gitconfig.sh "$(MAKE)"
install-git-commit-clangfmt:
cp util/scripts/prepare-commit-msg.clang-format .git/hooks/prepare-commit-msg
include util/crossgcc/Makefile.inc include util/crossgcc/Makefile.inc
.PHONY: tools .PHONY: tools

View File

@ -0,0 +1,13 @@
#!/bin/bash
files=`git diff --cached --name-only | grep '\.[ch]$'`
if [ -z "$files" ]; then
exit 0
fi
# This has to be set here; otherwise a grep error seems to cause
# us to exit with non-zero status.
set -e
clang-format -i $files
git add $files
u=`git config user.name`
m="clang-formatted-by: $u"
echo $m >> $1