Never Commit Something Stupid Again – Sanity-Check your Commit in a Hook!

Never Commit Something Stupid Again – Sanity-Check your Commit in a Hook!

Today, for the 185th time, I accidentally committed some debugging code on my project. But there won’t be a 186th time.

How hard can it be to get a warning when I’m about to commit a diff that contains certain forbidden strings?

Of course it isn’t – it’s called pre-commit hooks.

And Github user pimterry came up with a pre-commit hook that does just this and lets you choose whether to abort or to commit nevertheless.

Setting it up

To check for the presence of Mocha’s describe.only and it.only methods on my project, I added these two entries to my Makefile:

install-git-hook:
	curl https://cdn.rawgit.com/pimterry/git-confirm/v0.2.1/hook.sh > .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit && make configure-git-hook

configure-git-hook:
	git config --unset-all hooks.confirm.match || echo 'Nothing to clear'
	git config --add hooks.confirm.match 'describe.only'
	git config --add hooks.confirm.match 'it.only'

How it works

  • install-git-hook tries to download and install pimterry’s hook on your project.
  • configure-git-hook sets up 2 forbidden strings: it.only and describe.only. Replace these with the ones you need.

Then, run make install-git-hook in your project directory.

Now when you commit a file containing a forbidden string, this is what you get:

keyword-matched

The default configuration includes a few usual suspects such as TODO and @ignore.
Viewing or editing your list of forbidden keywords is all a matter of playing with git config. You can refer to the Git Confirm repo for details.


You liked this article? You'd probably be a good match for our ever-growing tech team at Theodo.

Join Us