I setup some git hooks to run some gulp
commands on pre-commit. I basically run jshint
/plato
. I basically want to bypass these for two cases:
- hotfix branches (master / hotfix)
- git merge (or find a way to do it in a way that doesn't crash on the merge commit case)
The plato gulp command runs analysis on the source and produces a /reports/ directory that tracks complexity over time. If we do this on the hotfix branch it will result in merge conflicts when merging them back into development. Enough talking here is the simple hook:
#!/bin/sh
if git diff --cached --name-only --diff-filter=ACM | grep '.js$' >/dev/null 2>&1
then
git stash -q --keep-index
./node_modules/.bin/gulp jshint
RESULT=$?
git stash pop -q
[ $RESULT -ne 0 ] && exit 1
git stash -q --keep-index
./node_modules/.bin/gulp plato
git add report/
git stash pop -q
fi
exit 0
Issue right now is if i have a merge conflict on "reports" and I resolve the merge All conflicts fixed but you are still merging.
and then commit it runs the analysis again and stages the commit and when it commits it throws an error:
/Users/Nix/work/project/.git/modules/somesubmodule/MERGE_HEAD' for reading: No such file or directory.
The directory does exist but there is no merge head...