如何设置一个git存储库,其中不同的用户只能看到某些部分?

Jos*_*vin 19 git security version-control repository access-control

你如何设置一个git存储库,一些用户可以看到源代码的某些部分,其他用户可以看到所有这些?我已经看到很多指南只给予某些用户提交访问权限,但是这些指南假设每个人都应该具有读访问权限.我也听说过gitosis,但我不确定它是否支持这个并且它在一年多没有任何提交,所以我认为它已经死了.

Jak*_*ski 13

简而言之:你做不到.Git是基于快照的(至少在概念级别)版本控制系统,而不是基于变更集的版本控制系统.它将项目(存储库)视为一个整体.历史是一个项目的历史,而不是单个文件历史的联合(它不仅仅是加入每个文件的历史).

update-paranoid在contrib或VREFs机制中使用钩子之类的钩子gitolite,您可以允许或禁止访问存储库,您可以允许或禁止访问各个分支.您甚至可以禁止任何更改指定子目录中的内容的提交.但该项目始终被视为一个整体.

好吧,你可以做一件事:创建一个你想限制访问子模块的目录,并限制对这个子模块库的访问.

  • 不它不是.提交对象指向表示存储库状态快照的树对象.变更集是当前和父提交的两个树之间的差异. (3认同)

bdo*_*lan 3

原生的 git 协议不支持这个;git 在许多地方假设每个人都拥有所有历史记录的完整副本。

也就是说,一种选择可能是使用git-subtree将存储库的一部分拆分为自己的子存储库,并定期合并回来。