我试图在一开始只有一个开发人员来实现一个 git 服务器,所以只有一个拥有完全访问权限。我已经没有问题了。该用户正在使用 ssh 访问权限进行工作。
我想与在 apache 上运行的某种 GUI(gitweb、gitlist、gitalist...)共享对项目的只读访问权限,这些 GUI 可以向特定用户显示我选择的 repo 协议(protocol),也许还有一些完全公开的.像这样的东西:
- Repo x - 用户 1 和用户 3 的读取权限
- Repo y - 用户 1 和用户 2 的读取权限
- Repo z - 所有用户的读取权限。
我无法找出执行此类操作的正确解决方案。
我可以找到有关如何进行身份验证的文档,以便仅向经过身份验证的用户显示存储库,但无法对存储库进行细粒度控制,以便仅向每个经过身份验证的用户显示一些具有在 apache 上运行的 GUI 的存储库。
网络服务器正在使用用户 git 运行 suexec,并且具有对存储库的全部读取权限。
应该如何实现这样的事情?也许一些钩子(Hook)?
此外,我只对允许用户下载项目打包的 tar.gz 的选项感兴趣。不计划允许用户与项目协作。也许解决方案不是这个。如果 trac 系统是更好的解决方案,它也可能很有趣,以便能够接收有关项目的反馈。
最佳答案
正确的解决方案是添加一个 authorization layer喜欢gitolite .
我的 httpd.conf例如,文件声明了一个:
- gitweb这将调用 gitolite,以便仅显示正确的存储库
(因为我包含了来自原生gitweb.conf.pl
的 gitweb filegitweb_config.perl
文件) - 一个https access这将调用第一个 gitolite 以允许或不允许推/pull/克隆命令。
例如:
ScriptAlias /hgit/ @H@/gitolite/bin/gitolite-shell/
SetEnv GIT_HTTP_BACKEND "@H@/usr/local/apps/git/libexec/git-core/git-http-backend"
关于git 仅向某些用户显示 gitweb 中的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569805/