我在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/
答案 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。工作原理:
--shared
选项初始化Git repo,以赋予其组写权限。