git-linter/README.md

41 lines
1.7 KiB
Markdown
Raw Normal View History

2015-05-23 06:11:42 +00:00
# pre-commit
This program is a git pre-commit hook that runs an arbitrary set of
syntax, style, and complexity checks against files about to be checked
in.
pre-commit is a git-hook; you install it into your project's .git
directory in .git/hooks and make it executable. It will run every time
you attempt to commit a collection of files, running the configured list
of linters against those files, and will terminate the check-in if any
of the files fails.
pre-commit uses the `git-stash` command to temporarily store any changes
you may have made between your `git-add` and your `git-commit`; it
therefore checks against your *staged* files, not your *workspace*
files. Most hooks do the wrong thing and assume your stage and
workspace are the same. This is not necessarily so. This has the
unfortunate side-effect of touching every file if things should fail,
which may confuse your IDE. I haven't quite figured out how to deal
with that.
2015-05-23 06:11:42 +00:00
pre-commit is written in Hy, a Lisp-like dialect of Python. I find Hy's
support for "cond", complex anonymous functions, and complex return
values highly appealing. The UTF-8 handling in this script means it is
compatible only with Hy running atop Python3.
pre-commit is based on the pre-commit recommendations in Steve Pulec's
"Why you need a git-hook and why most are wrong" available at:
http://css.dzone.com/articles/why-your-need-git-pre-commit The changes
I've made reflect a different set of needs, different possible ways of
receiving error conditions, and a slightly nicer output.
If, while installing this, you encounter a problem, you must return your
git repository to its original pre-stash state. Learn to use the
following commands correctly:
`git stash list`
2016-05-21 01:13:04 +00:00
`git stash pop`
2015-05-23 06:11:42 +00:00