* pre-commit not working at server side push
@ 2011-07-20 6:43 J. Bakshi
2011-07-20 7:15 ` J. Bakshi
2011-07-20 7:18 ` Ilari Liusvaara
0 siblings, 2 replies; 7+ messages in thread
From: J. Bakshi @ 2011-07-20 6:43 UTC (permalink / raw)
To: git@vger.kernel.org
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
```````````````````
Running fine when placed it at local copy.
I have placed the hook at the server under hooks directory and provided the execute permission also
$ chmod a+x hooks/pre-commit
But even with wrong php syntax I am able to push the file. Have I missed something ?
Thanks
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 6:43 pre-commit not working at server side push J. Bakshi
@ 2011-07-20 7:15 ` J. Bakshi
2011-07-20 7:30 ` Ilari Liusvaara
2011-07-20 7:18 ` Ilari Liusvaara
1 sibling, 1 reply; 7+ messages in thread
From: J. Bakshi @ 2011-07-20 7:15 UTC (permalink / raw)
Cc: git@vger.kernel.org
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
>
> ```````````````````
>
> Running fine when placed it at local copy.
>
> I have placed the hook at the server under hooks directory and provided the execute permission also
>
> $ chmod a+x hooks/pre-commit
>
> But even with wrong php syntax I am able to push the file. Have I missed something ?
>
> Thanks
seems it should be pre-receive hook at the server. So done accordingly but still not working
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 6:43 pre-commit not working at server side push J. Bakshi
2011-07-20 7:15 ` J. Bakshi
@ 2011-07-20 7:18 ` Ilari Liusvaara
2011-07-20 7:21 ` J. Bakshi
1 sibling, 1 reply; 7+ messages in thread
From: Ilari Liusvaara @ 2011-07-20 7:18 UTC (permalink / raw)
To: J. Bakshi; +Cc: git@vger.kernel.org
On Wed, Jul 20, 2011 at 12:13:56PM +0530, J. Bakshi wrote:
> Hello list,
>
> I have this bash script to check php syntax error and prevent the commit if there is any
<snip>
> Running fine when placed it at local copy.
>
> I have placed the hook at the server under hooks directory and provided the execute permission also
>
> $ chmod a+x hooks/pre-commit
>
> But even with wrong php syntax I am able to push the file. Have I missed something ?
Pre-commit runs on commit, not on push. And push is not commit.
-Ilari
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 7:18 ` Ilari Liusvaara
@ 2011-07-20 7:21 ` J. Bakshi
0 siblings, 0 replies; 7+ messages in thread
From: J. Bakshi @ 2011-07-20 7:21 UTC (permalink / raw)
To: Ilari Liusvaara; +Cc: git@vger.kernel.org
On Wed, 20 Jul 2011 10:18:07 +0300
Ilari Liusvaara <ilari.liusvaara@elisanet.fi> wrote:
> On Wed, Jul 20, 2011 at 12:13:56PM +0530, J. Bakshi wrote:
> > Hello list,
> >
> > I have this bash script to check php syntax error and prevent the commit if there is any
>
> <snip>
>
> > Running fine when placed it at local copy.
> >
> > I have placed the hook at the server under hooks directory and provided the execute permission also
> >
> > $ chmod a+x hooks/pre-commit
> >
> > But even with wrong php syntax I am able to push the file. Have I missed something ?
>
> Pre-commit runs on commit, not on push. And push is not commit.
>
> -Ilari
Thanks, already figured it out, it would be pre-receive on server; but still not working.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 7:15 ` J. Bakshi
@ 2011-07-20 7:30 ` Ilari Liusvaara
2011-07-20 7:45 ` J. Bakshi
0 siblings, 1 reply; 7+ messages in thread
From: Ilari Liusvaara @ 2011-07-20 7:30 UTC (permalink / raw)
To: J. Bakshi; +Cc: git@vger.kernel.org
On Wed, Jul 20, 2011 at 12:45:38PM +0530, J. Bakshi wrote:
> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 7:30 ` Ilari Liusvaara
@ 2011-07-20 7:45 ` J. Bakshi
2011-07-20 9:03 ` J. Bakshi
0 siblings, 1 reply; 7+ messages in thread
From: J. Bakshi @ 2011-07-20 7:45 UTC (permalink / raw)
To: Ilari Liusvaara; +Cc: git@vger.kernel.org
On Wed, 20 Jul 2011 10:30:17 +0300
Ilari Liusvaara <ilari.liusvaara@elisanet.fi> wrote:
> On Wed, Jul 20, 2011 at 12:45:38PM +0530, J. Bakshi wrote:
> > 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
Thanks for your clarification. As a newbie I am interested to know any such pre-receive hook which can check php syntax before php.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: pre-commit not working at server side push
2011-07-20 7:45 ` J. Bakshi
@ 2011-07-20 9:03 ` J. Bakshi
0 siblings, 0 replies; 7+ messages in thread
From: J. Bakshi @ 2011-07-20 9:03 UTC (permalink / raw)
To: J. Bakshi; +Cc: Ilari Liusvaara, git@vger.kernel.org
On Wed, 20 Jul 2011 13:15:33 +0530
"J. Bakshi" <joydeep@infoservices.in> wrote:
> On Wed, 20 Jul 2011 10:30:17 +0300
> Ilari Liusvaara <ilari.liusvaara@elisanet.fi> wrote:
>
> > On Wed, Jul 20, 2011 at 12:45:38PM +0530, J. Bakshi wrote:
> > > 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
>
> Thanks for your clarification. As a newbie I am interested to know any such pre-receive hook which can check php syntax before php.
The script given at the link below is working fine
http://git.661346.n2.nabble.com/Odd-results-writing-a-Git-pre-receive-hook-to-syntax-check-PHP-files-td5471120.html
But it doesn't show where the error is. The part actually checking the error is
``````````
function syntaxCheckFile($blob,$filename) {
$needle = '/(\.php|\.module|\.install)$/';
if (preg_match($needle,$filename)) {
#echo "Checking $filename\n";
$dummy = array();
exec("git show $blob|/home/php/bin/php -l",$dummy,$checkrcval);
if ($checkrcval != 0) {
echo "There was a syntax error in '$filename'.
Rejecting this attempted merge!\n";
exit(1);
}
}
}
``````````
can we modify it so that it shows the error too ?
PS: I am not a php guy
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-07-20 9:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-20 6:43 pre-commit not working at server side push J. Bakshi
2011-07-20 7:15 ` J. Bakshi
2011-07-20 7:30 ` Ilari Liusvaara
2011-07-20 7:45 ` J. Bakshi
2011-07-20 9:03 ` J. Bakshi
2011-07-20 7:18 ` Ilari Liusvaara
2011-07-20 7:21 ` J. Bakshi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).