You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog/content/posts/git-tips-lint-test-precommi...

1.2 KiB

title date tags
Git Tips - Lint + Test Pre-commit Hook 2020-01-01T21:00:39Z
git
bash

One of my favorite inventions is a pre-commit hook that auto runs test and lint commands from a makefile or package.json if they're found:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/env bash if [ -f "$PWD/makefile" ] && [ ! -z "$(cat $PWD/makefile | grep '^lint:')" ]; then echo "running make lint" make lint elif [ -f "$PWD/package.json" ] && [ ! -z "$(cat $PWD/package.json | grep "^\"lint\":")" ]; then echo "running npm run lint" npm run lint fi if [ -f "$PWD/makefile" ] && [ ! -z "$(cat $PWD/makefile | grep '^test:')" ]; then echo "running make test" make test elif [ -f "$PWD/package.json" ] && [ ! -z "$(cat $PWD/package.json | grep "^\"test\":")" ]; then echo "running npm run test" npm run test fi

The /usr/bin/env bash piece ensures that the script has access to all of the environment variables you expect in your regular shell.

If the test or lint command fails then the git commit command fails. If I absolutely need to commit something in spite of the lint/test results I can do git commit --no-verify to skip the pre-commit hook.