如果您不想了解上下文,请跳至TL;DR。
背景:我正在处理内部团队学习过程,其中“学生”(学习新技术/学科的软件工程师)的任务之一是提交项目源代码。
由于学习材料包含仅供内部使用的技术代码,因此将作业发布到github是超出范围的。我们有自己的内部gitlab,所以他说,不如简单地提交为分支,但使该分支仅可由评估者和提交者访问(这样,学生就不能欺骗其他学生的项目)。
我们不想为每个学生创建存储库,因为这会使我们的组织gitlab变得混乱。我不想让学生提交zip文件,因为它在本地评估计算机中也很混乱。
TL;DR:我们想做一些类似google codelabs的东西,学生可以通过私有的内部公司gitlab克隆准系统repo,但是他们应该通过他们自己的“新分支”在同一个repo中提交他们自己的作业,而不是“新repo”。我们想把它变成私有分支或者任何能达到这种目标的东西。
2条答案
按热度按时间qij5mzcb1#
一般来说,即使你可以创建私有分支,它们通常也是不安全的。Git提供了一个名为namespaces的特性,可以对引用进行分段。在该特性的手册页中,它写道:
提取和推送协议的设计目的不是防止一方从另一个存储库中窃取不打算共享的数据。如果您有需要保护的私有数据以防止恶意对等方攻击,最好的选择是将其存储在另一个存储库中。这适用于客户端和服务器。特别是,服务器上的名称空间对于读取访问控制无效;您应该只将对命名空间的读访问权限授予您信任的对整个存储库具有读访问权限的客户端。
所有这些内容都适用于各种特定于分支的访问控制机制,无论是否使用名称空间。
如果你想阻止其他用户访问,你需要使用单独的存储库。在某些环境中,这可能是一个fork,尽管要知道在一些托管平台(如GitHub)上,一个fork中的数据对所有fork都是可见的,这在这里是行不通的。我知道GitHub本身有一个针对教育平台的解决方案;也许GitLab也有类似东西。
ruoxqz4g2#
我们有自己的内部gitlab
在这种情况下,是的,在理论上,你可以限制每个用户的克隆库数量,但是...仅限于GitLab Ultimate。
2022年11月第15期:我的生日快乐
Git滥用率限制
在GitLab 15.6中,我们引入了Git abuse rate limiting。
启用此功能可在用户在给定时间范围内下载或克隆的组或其任何子组中的存储库超过指定数量时自动通知管理员。
您还可以自动禁止超过速率限制的用户。被禁止的用户不能访问主组或其任何非公共子组。对不相关组的访问不受影响。默认情况下,禁止是永久性的,但组管理员始终可以取消禁止被禁止的用户。
请参阅Documentation和Issue。