Friday, June 23, 2017 5:11 PM hacks
Ever pushed unwanted code to a Git repo after a long debugging session? For example, a rogue statement looking like:
var count = GetCount(); Console.WriteLine("DEBUG>>>" + count); // debug
Or, maybe, your precious secret API key that you hard-coded by mistake? Or, the offensive comment you wrote down in despair late late last night?
Of course that has never happened to you because you are a 10x developer, but it happened to me. Until I saved this simple script as
.git/hooks/pre-commit in my projects:
#!/bin/sh if git diff --cached | grep -q 'nogit' then cat <<\EOF Error: found 'nogit' marker in files EOF exit 1 else exit 0 fi
Simply, it looks for the
nogit tag in the committed code, and refuses to proceed if the tag was found. All you have to do is remember to tag your quick and dirty code:
var count = GetCount(); Console.WriteLine("DEBUG>>>" + count); // nogit
And Git will just not accept to commit until you remove it.
It probably is an old trick.
This is a very simple script. It does not make any difference between comments and code, so a
nogit variable would be rejected. If you have ideas to improve it, please share.
Before you try: one cannot add hooks to a repository and have them automatically enabled on each clone. This is for security reason, so one cannot ship a script that e.g. wipes the entire hard-disk. So the hook has to be manually enabled on each repo you clone.
Unless something can be done with Git's
core.hooksPath global setting. Not sure.