问题
为什么我的胡克没有被执行?
环境&设置
我正在使用Debian 7和Git 1.7.10.4 - 官方Debian存储库中的当前版本。 没有具体的" git"由安装创建的Unix用户,然后git存储库在另一个标准的unix用户下处理,而不是名为git。它是一个"裸露的" Git Repository。
挂钩
基于教程,我创建了下面的Hook(我替换了foldername),虽然没有post-receive.sample文件。
#!/usr/bin/env ruby
# post-receive
REPO=/var/webs/placeholder_name.de
DATE_STAMP=$(date +%Y.%m.%d_%H:%M)
LOG=/var/log/git_hook/placeholder_name.log
echo "PUSH detected @ $DATE_STAMP ▒$1 $2 $3" >>$LOG
# 1. Read STDIN (Format: "from_commit to_commit branch_name")
from, to, branch = ARGF.read.split " "
# 2. Only deploy if master branch was pushed
if (branch =~ /master$/) == nil; then
"Received branch #{branch}, not deploying." >> $LOG
exit
end
# 3. Copy files to deploy directory
echo "Push at $DATE_STAMP $1 $2 $3" >> $LOG
cd $REPO && git reset --hard HEAD && git clean -f -d && git pull >> $LOG
# 4.TODO: Deployment Tasks
cd WebContent && php composer.phar update
问题
shell脚本本身正在工作,我知道"工作树" - 替代,但这不是问题。 正如我所提到的,脚本正在运行 - 如果由ssh执行。 然而,从客户端推送似乎不执行脚本 - 日志文件没有输入。
Git配置
[core]
repositoryformatversion = 0
filemode = true
bare = true
权限
我希望推送是在给定的Unix用户下完成的,脚本是可执行的,所以就我对这个主题的熟悉而言,这不应该成为一个问题。