我们在FreeBSD上有Git的权限问题。 设置相当简单。 我们在同一台服务器上有几个不同的回购。 为了简单起见,假设它们位于/ git / repo1和/ git / repo2中。
每个回购都由用户'git'和一个自称的组(例如repo1)拥有。 回购是用g + rwX访问configuration的。
每个提交存储库的用户也是repo组的成员(例如repo1)。
Git仓库都有'sharedRepository = group'集。
到目前为止,所有用户都可以从存储库中检出代码,并且第一个用户可以提交没有任何问题。 但是,当下一个用户尝试提交存储库时,他将收到权限错误。
我们在这个问题上已经有一段时间了,我们设法解决这个问题的唯一方法是在提交之间运行以下脚本(显然非常不方便):
find / git / repo1 -type d -exec chmod g + s {} \;
chmod -R g + rwX / git / repo1
chown -R git:repo1 / git / repo1 /
cd / git / repo1
git gc
任何人都知道问题出在哪里?
closures我的头顶上,可能是一个丑陋的问题?
你有没有考虑用gitosis包装git( http://vafer.org/blog/20080115011413 )? 我发现使用Git(使用Git拥有的回购没有任何权限头痛)是一种更愉快的方式,使用gitosis可以实现的权限是一个有吸引力的奖励。
当您创build一个新的存储库时,设置该文件夹的组所有权,并给它一个粘性位:
chown git:repo1 /git/repo1
chmod g+ws /git/repo1
还要确保你的每个用户都有正确的umask。 您可以在/etc/login.conf中设置默认的umask。 查找下面的行:default,如下所示:
:umask=002:
将其更改为:
:umask=022:
并运行:
sudo cap_mkdb /etc/login.conf