【问题标题】:Bare repository permissions.裸存储库权限。
【发布时间】:2012-06-22 17:42:22
【问题描述】:

我在 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/

【问题讨论】:

  • 考虑使用 gitolite。这样就省去了麻烦
  • 您是否以其他用户身份启动了 repo? git init 将进行设置,以便初始化 repo 的用户可以访问它们。至于另一个用户,他们通常只是克隆 repo,这将初始化他们自己的副本(从而使其可供他们使用)。

标签: git ubuntu git-bare


【解决方案1】:

跑步

$ git init --shared=0777 --bare

应该做你想做的。

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

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

【讨论】:

    【解决方案2】:

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

    首先,如前所述,考虑使用gitolite

    如果您不太可能为一两个贡献者提供超过一两个存储库,那么 gitolite 似乎是一种开销,尤其是如果您以前从未使用过它。 (但我仍然建议使用它。)

    在开始使用 gitolite 之前,我使用 this script 创建了我的共享 git 存储库。它是如何工作的:

    1. 所有 Git repo 用户(特定 repo 的)都应该在同一个组中。
    2. repo 的目录应归该组所有。
    3. 此目录应设置粘性组位(确保不要在文件上设置),以便用户提交内容时保留组。
    4. 应使用--shared 选项初始化Git 存储库,以授予其组写入权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2011-07-09
      • 1970-01-01
      • 2010-09-08
      • 2011-11-08
      • 1970-01-01
      相关资源
      最近更新 更多