【问题标题】:deploying a website/webapp via git/gitolite permissions error通过 git/gitolite 权限错误部署网站/webapp
【发布时间】: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


【解决方案1】:

首先,确保 git 帐户与 apache 帐户在同一组中。
(或者你需要回到我想要避免的previous answer

你报告这个作品:

 sudo GIT_WORK_TREE=..... git checkout -f

但是使用一个裸仓库,你也可以看到 get:

 fatal: You are on a branch yet to be born

(我不建议尝试让您的 gitolite 管理的 bare 存储库成为非裸存储库,如 blog post

git config core.worktree /home/user/myproject
git config core.bare false
git config receive.denycurrentbranch ignore

)

我更喜欢确保 /var/www/www.example.com 目录是一个 git 存储库,您可以在其中提取,而不是尝试结帐。
所以我喜欢的钩子更多:

cd /var/www/www.example.com
git --git-dir=/var/www/www.example.com/.git --git-work-tree=/var/www/www.example.com pull

(带origingit pull默认使用的远程名称,参考gitolite裸repo)

【讨论】:

  • nice.. 事实证明,我所做的一切都很完美,除了 (a) 权限是一个问题。 (b) sudo 放错地方了。非常感谢 VonC​​pan>
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
相关资源
最近更新 更多