首页 > 解决方案 > GitHub monorepos 的精细读取访问权限

问题描述

我们将向数百名用户提出数百个编码挑战。每个用户都可以针对任意数量的挑战发布自己的解决方案,从而可能产生数千个挑战解决方案。创建数百或数千个单独的存储库似乎很笨拙,因此我们希望将整个项目保留在一个单一存储库下,并限制每个用户在每个文件或每个目录的基础上的读取访问。每个用户应该只能看到他们自己的文件,而 repo 的所有者应该能够看到所有文件。

一个示例 repo 结构如下所示:

challenges/
├── challenge1/
│   ├── challenge1-user1/
│   ├── challenge1-user2/
│   └── challenge1-user5/
│       ...
├── challenge2/
│   ├── challenge2-user2/
│   └── challenge2-user3/
│       ...
├── challenge3/
│   ├── challenge3-user1/
│   ├── challenge3-user3/
│   └── challenge3-user4/
│       ...
├── ...
...

如果其他人不得不处理类似的问题及其解决方案,也很感兴趣。

标签: gitgithubrepositoryaccess-control

解决方案


您不能提供对 Git 存储库的这种受限访问。Git 命名空间的文档解释了原因:

获取和推送协议并非旨在防止一方从另一方存储库中窃取不打算共享的数据。如果您有需要保护的私有数据免受恶意对等方的侵害,最好的选择是将其存储在另一个存储库中。这适用于客户端和服务器。特别是,服务器上的命名空间对读访问控制无效;您应该只向您信任的客户端授予对命名空间的读取权限,这些客户端具有对整个存储库的读取权限。

如文档所述,如果您的数据需要具有不同的访问控制,则它需要存在于不同的存储库中。一个monorepo在这里是行不通的。


推荐阅读