在没有root权限的情况下管理git仓库

问题描述:

我想在同一个文件系统上工作的同事可以访问我的主目录下的git-repo,允许他们使用git push。但是,我不希望他们能够用git之外的任何东西不小心修改回购,所以我不能只用chmod g+w它。在没有root权限的情况下管理git仓库

这是可能的,而不是根?我唯一能想到的就是将SUID位设置为git,这样git可以像我一样访问回购,但我不知道这是否真的是一个好主意......

你可以使用类似gitolite的东西,它为你处理很多麻烦。

如果你想使用纯git的,你可以这样做:

要做到这一点所有的同事,你需要在同一个组(如开发者)。您可以一次性修复所有内容:

newgrp developers 
git init --bare --shared=group repo 

但是,您将获得一个空的存储库。你可以把你当前的工作推到那里,然后从那里继续。

如果你不使用git init路径,你将需要自己设置apprioprate权限以及设置core.sharedrepository=1配置变量。

如果您要公开您的回购作为file:///,则文件权限将适用。据我所知,git本身并不涉及“权限”。你用来发布你的repo的机制负责处理这个方面(ssh,.htacess或者web的东西)。


这是未经测试,但我认为你应该能够设置使用git daemon一个守护程序,用户可以用它来从您的回购推/拉。它需要读取/写入您的存储库,但没关系,因为它像你一样运行。您的用户将只能使用此功能访问您的回购。有关详细信息,请查看手册页(git help daemon)和this。 但是,我的原始观点依然存在。这是的一种方式,而不是使用file:///协议来公开您的不需要root权限的存储库。

+0

那么,没有办法让回购读写能够为git,但没有它的只读? – 2010-11-26 11:15:42

+0

我认为不,但有一些想法。我已经更新了我的答案。 – 2010-11-26 11:29:18

+0

+1谢谢,只要不需要细粒度的权限设置,直接起作用 – 2010-11-26 12:13:33

最好的方法是使用gitosis,或者只是像创建一个新的git用户一样简单,并让信任的用户使用ssh密钥ssh进入该帐户。

后者并没有真正阻止人们在不使用git的情况下访问文件,如果这很重要,请花时间正确配置gitosis。