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