裸存储库权限。

时间:2012-06-22 17:42:22

标签: git ubuntu git-bare

我在ubuntu服务器上安装了git,我正在将本地repo推送到服务器并获取下面的错误。当我更改它的两个文件夹的权限时。我只是想了解为什么当我设置git init --bare时,它不仅仅与它创建的权限一起工作。 777对这些文件夹具有最佳权限吗?是否有更合法的方法来解决这个问题?

第一个错误:

error: insufficient permission for adding an object to repository database ./objects

第一个解决方案:

sudo chmod 777 objects/

第二个错误:

fatal: Unable to create '/srv/git/example.com.git/refs/heads/master.lock': Permission denied

第二种解决方案:

sudo chmod 777 refs/heads/

2 个答案:

答案 0 :(得分:11)

运行

$ git init --shared=0777 --bare

应该做你想做的事。

来自http://git-scm.com/docs/git-init

或者,您可以在服务器上设置openssh服务器,让用户通过ssh访问此存储库。

答案 1 :(得分:3)

您想要使用777权限是一个非常糟糕的迹象。你做错了什么。

首先,正如已经建议的那样,考虑使用gitolite

如果你不可能为一个或两个贡献者提供超过一个或两个回购,那么gitolite似乎是一个开销,特别是如果你以前从未使用它。 (但我仍然建议使用它。)

在我使用gitolite之前,我使用this script创建了我的共享git repos。工作原理:

  1. 所有Git回购用户(特定回购)都应该在同一个组中。
  2. 回购目录应归该组所有。
  3. 应该在此目录中设置Sticky group bit(确保不在文件上设置),因此当用户提交内容时将保留组。
  4. 应使用--shared选项初始化Git repo,以赋予其组写权限。