I'm writing post-receive hook basing on the post-receive-email
script from the contrib
dir, but it seems that the oldrev
and newrev
arguments are empty.
The script looks like this:
#!/bin/bash
oldrev=$(git rev-parse $1)
newrev=$(git rev-parse $2)
The script runs on push, but all $1
, $2
, $oldrev
and $newrev
are empty. Should I configure something to get it running?
(The repository was created by gitolite
if it does matter)
I stumbled into this problem while setting up a continuous integration server. Since the arguments are not passed to post-receive via the command line, but are passed over STDIN, you have to use the read command to fetch them. Here is how I did it:
#!/bin/sh
read oldrev newrev refname
BRANCH=${refname#refs/heads/}
curl --request POST "http://my.ci.server/hooks/build/myproject_$BRANCH"
There are no arguments though the information is passed over STDIN. To read that information from bash simply do this:
read oldrev newrev refname
echo "Old revision: $oldrev"
echo "New revision: $newrev"
echo "Reference name: $refname"
I'm just summarizing the answers already posted.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With