Git站点部署 - post-receive hook中的checkout无效

时间:2012-06-20 14:01:07

标签: git repository git-checkout git-post-receive

我已经按照本教程'Using Git to manage a web site',使用Tower提交并将我的本地仓库推送到远程服务器。通过以下消息推送成功:

Pushing to ssh://user@mysite.com/~/git/tprevo.git
stdin: is not a tty
Counting objects: 40, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (37/37), done.
Writing objects: 100% (40/40), 171.95 KiB, done.
Total 40 (delta 3), reused 0 (delta 0)
To ssh://user@mysite.com/~/git/tprevo.git
 * [new branch]      master -> production
updating local tracking ref 'refs/remotes/production/production'

Successfully created tracking connection.

我已经验证我的post-receive挂钩正在执行,但checkout命令没有将推送的代码添加到我认为我已设置为我的工作目录的内容中。我一直试图弄清楚这一点。

发表 - 接收:

#!/bin/sh
GIT_WORK_TREE=/home/tprevo/public_html/tprevo git checkout -f

我是Git的新手,非常热衷于学习。调试它的最佳方法是什么?

1 个答案:

答案 0 :(得分:7)

好的......我有类似的设置......你的文件可执行吗? 请检查文件属性...

ls -la post-receive

如果它不可执行,那么你需要chmod它...

sudo chmod +x post-receive

更新

注意到您有一个命名分支,您可能希望在post-receive hook的checkout命令中具体...

git checkout -f production