Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
docs:git:hooks [2010/10/08 23:37] – created billhdocs:git:hooks [2011/01/05 16:19] (current) billh
Line 1: Line 1:
 ====== hooks ====== ====== hooks ======
 +git hooks will fire at various times, depending on the name.  You can find example hooks inside .git/hooks/ in any git project.
 +
 +===== build number =====
 +You might want a distinct number to represent this "build", or commit (even though we don't really have binary builds in languages like php).  We can use a post-commit hook to pull in a subset of the SHA-1 hash.  In this example we use the first 6 characters of the SHA-1, writing out to a file named "BUILD".
 +<code sh>
 +#!/bin/sh
 +
 +git log|head -n 1|cut -c 8-13 - > BUILD
 +</code>
 +
 +:!: Don't forget this gotcha...when you change branches, the build file would keep the commit hash from the last commit.  It is likely that your other branch wouldn't be on the same commit, so we need another hook to update this when we do any checkout.  Copy the same contents of post-commit to a new file called post-checkout.
 +
 +You should also see [[#global hooks]].
  
 ===== pre-commit: store compressed database dump with each commit ===== ===== pre-commit: store compressed database dump with each commit =====
Line 12: Line 25:
 exit $? exit $?
 </code> </code>
 +
 +===== global hooks =====
 +There are several ways to set up hooks so that all projects use the same set of files.  I prefer to symlink a hooks directory.  See [[git on windows]] for examples of using mklink in windows.  Basically we allow git to do its think with git init or git clone, then we delete the .git/hooks directory and replace it with a symlink called hooks which points to our global location.
 +
 +===== External Links =====
 +* http://www.kernel.org/pub/software/scm/git/docs/githooks.html
  • docs/git/hooks.1286602673.txt.gz
  • Last modified: 2010/10/08 23:37
  • by billh