In coreboot we try to check for whitespace errors before committing. Of course a pre-commit hook is the way to go, but unfortunately it is not so simple (at least for me) as the following requirements exist.
Only the files actually committed should be checked. That means running git commit -a
, abort that and then running git commit some/file
should only check some/file
for whitespace errors.
There are certain files that are allowed to have whitespace errors. In our case these are *.patch
and *.diff
files which by design seem to contain whitespace error.
Currently the whole tree is checked, which takes a lot of time. I tried to come up with a patch, but failed so far. Best would be to have
$ git diff --check --only-committed-files --exclude "*patch$"
where I could not find a way for the last to switches.
Currently, I would use
$ git diff-index --cached --name-only $against -- | grep -v patch$
and pass that list to some whitespace check program. Unfortunately that still does not fulfill the first requirement. What am I missing to solve this elegantly?