对于通过SSH和HTTPS提供的共享git仓库,如何控制两种协议的访问?
题
我正在使用 hooks / update
来控制谁可以更新共享存储库中的特定引用。这适用于SSH,但我最近发现(至少使用git-1.6.4.2)这个钩子不会影响WebDAV推送,即,任何用户都可以更新任何分支。
是的,我可以添加 Require group ...
指令,如共享git存储库的8种方法以及单独的组文件,但我想避免维护并行授权配置!
另一种选择是重写 hooks / update
,但这似乎是浪费,因为它已经在为SSH工作了。
解决方案
你应该明白,对于Git(目前),HTTPS是一个“愚蠢的”。协议,即整个交换根本不涉及服务器上的git,包括运行钩子;它只是涉及的Web服务器(使用WebDAV进行HTTPS推送)。
然而,您应该查看存储库访问管理工具,例如 Gitosis (在Python中,使用setuptools)或新的 Gitolite (在Perl中,更简单),或来自Google Android项目的 repo 工具或其他内容。也许他们会提供集中的访问管理。
不隶属于 StackOverflow