部署git pull作为home dir用户

时间:2014-10-23 07:29:51

标签: git web server

我想知道是否可以为每个克隆的 git存储库设置服务器用户和组。

例如,如果存储库位于目录中:

/home/example/domains/example.com/public_html/

用户将示例,该组也将是示例。但是当我通过终端克隆(以root身份登录)时,文件将保存为 root:root 而不是示例:示例

每次添加新文件时,无需 chown 即可防止这种情况发生的最佳方法。

那会发生什么?

  1. 转到其他用户cd /home/example/的目录,您可以通过键入ls -all看到该目录中的所有文件都归用户示例和组示例所有。
  2. 转到git存储库或创建一个,在此示例中,我在/home/example/domains/example.com/public_html/创建了一个。
  3. 再次执行ls命令,您会发现用户和组等于root:root,但我不希望它应该是示例:example。
  4. 一个简单但手动的解决方案就是。

    chown -R example:example /home/example/domains/example.com/public_html/
    

    只有我搜索更具动态性的东西,它还必须与所有其他git命令一起使用,例如pull,因为当你从存储库中提取新提交到本地时,它将归root:root所有。 / p>

1 个答案:

答案 0 :(得分:0)

切换到'示例'用户使用sudo -u。您希望在正在运行的任何钩子git pull中执行此操作。如果git pull没有运行任何挂钩,建议您阅读this guide on deploying using git

Git跟踪文件持久化的可执行位,而不再是。

一般情况下,你应该避免以root身份运行这样的事情:没有理由不作为专用的git用户(或示例用户)推送,并且有许多理由不以root身份推送。