【发布时间】:2013-03-02 16:31:33
【问题描述】:
我已经设置了一个开发/测试服务器,开发人员可以在其中通过 gitolite/git 将存储库推送到远程存储库/网络服务器。 在存储库站点上一切正常,但是开发人员可以使用服务器:
问题:
我想将代码部署到 apache 文档根目录(chown'd apache:apcahe 和 chmod'd 755)。 I am following these instructions 并且在编辑我的接收后挂钩时,如下所述:
#!/bin/sh
echo "deploying to DocumentRoot"
GIT_WORK_TREE=/var/www/www.example.com git checkout -f
但是,现在当我从本地仓库运行 git push 时,我会收到以下权限错误:
error: git checkout-index: unable to create file .gitignore (Permission denied)
error: git checkout-index: unable to create file .htaccess (Permission denied)
我的文档根目录是空的...接收后挂钩正在以用户“gitolite”的身份运行(不确定这是否重要)。
gitolite 已经在 sudoers 列表中,所以我想运行类似:
GIT_WORK_TREE=/var/www/www.example.com sudo git checkout -f
但这似乎也不起作用,如果可能,我想避免calling a separate shell script。
任何想法都将不胜感激。
【问题讨论】:
-
是否有可能确保
gitolite用户与apache帐户在同一组中? -
刚刚将 gitolite 用户添加到 apache 组并使用 sudo 运行 post-recieve 钩子现在我得到:致命:你在一个尚未出生的分支上 -- ps:你如何进行突出显示在 cmets 中?
-
感谢@VonC 我解决了这个问题,但答案是“sudo GIT_WORK_TREE=..... git checkout -f”
-
顺便说一句,使用
`可以让您在cmets 中突出显示。
标签: git unix version-control gitolite githooks