Re: pre-commit not working at server side push
- From
- Ilari Liusvaara <ilari.liusvaara@elisanet.fi>
- Date
- Jul 20, 2011, 07:30 UTC
- Message-ID
- <20110720073017.GA10465@LK-Perkele-VI.localdomain>
- In-Reply-To
- <20110720124538.482628e3@shiva.selfip.org>
On Wed, Jul 20, 2011 at 12:45:38PM +0530, J. Bakshi wrote:
Show 28 quoted lines
> On Wed, 20 Jul 2011 12:13:56 +0530 > "J. Bakshi" <joydeep@infoservices.in> wrote: > > > Hello list, > > > > I have this bash script to check php syntax error and prevent the commit if there is any > > > > ``````````````````` > > #!/bin/sh > > > > ##php_syntax_check > > > > for i in $(git diff-index --name-only --cached HEAD -- | grep -E '\.(php|engine|theme|install|inc> > > if [ -f $i ]; then > > output=$(/usr/bin/php5 -l $i) > > if [ "$output" == "No syntax errors detected in $i" ]; > > then > > echo "PHP syntax check for $i: OK" > > else > > echo "=====================================================================> > > echo "Pause $i for the commit due to PHP parse errors:" > > echo "$output" > > exit 1 > > fi > > fi > > done > > > > ```````````````````
> seems it should be pre-receive hook at the server. So done accordingly but still not working
Pre-receive runs after objects have been received but before branches are updated. So it can inspect the newly arrived commits but the branches retain their old values.
- Firstly, the server does not have index, so diff-index does not do anything sane. - Secondly, HEAD does not point to anything newly arrived (the hook gets list of update instructions via stdin). - Thirdly, this hook must be prepared for multiple commits in multiple branches appearing at once.
I think githooks(5) documents what these hooks receive and what they do.
-Ilari