我正在尝试写一个pre-receive hook
对于 git 来说,它将拉取正在推送的最新版本的代码并对其运行单元测试。我的代码如下,但是当它到达“git checkout $newrev”时,我得到:
远程:致命:引用不是树:188de39ca68e238bcd7ee9842a79397f39a5849e
我需要做什么才能在接收发生之前签出正在推送的代码?
#!/bin/bash
while read oldrev newrev refname
do
echo "Preparing to run unit tests for $newrev"
TEST_DIR=/opt/git/sommersault-push-tests/sommersault
# check out this version of the code
unset GIT_DIR
echo $refname
cd $TEST_DIR
git checkout $newrev
...do more stuff...
done
尽管其他人建议已收到提交,但尚未编写。
我什至可以说,预接收挂钩比后接收挂钩更适合部署。这就是 Heroku 使用预接收挂钩进行部署的原因。如果您的部署未成功,您可以拒绝提交。
下面是一些可以帮助您解决问题的代码:
#!/bin/bash
while read oldrev newrev refname
do
echo "Preparing to run unit test for $newrev ... "
git archive $newrev | tar -x -C /tmp/newrev
cd /tmp/newrev
echo "Running unit test for $newrev ... "
# execute your test suite here
rc=$?
cd $GIT_DIR
rm -rf /tmp/newrev
if [[ $rc != 0 ]] ; then
echo "Push rejected: Unit test failed on revision $newrev."
exit $rc
fi
done
exit 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)