使用遗留存储,当触发预接收挂钩时,很容易猜测所涉及的存储库的 URL,因为路径是“group/project-name.git”。
在 Gitlab 中使用新的哈希存储,如果项目 id 为 2,“pwd”命令将返回一个路径,例如 d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35.git。
=> 如何根据散列路径获取项目 ID?
我的目标是检查某人推送的所有提交是否由实际授权在该项目中编写的人编写。如果我不知道涉及哪个项目,我就不能这样做。虽然我可以启动“gitlab-rails 控制台”并使用“ProjectRepository.find_by”,但在钩子的上下文中使用该脚本是不切实际的。
有允许这样做的推送规则。但是,推送规则不是免费的,并且在 Gitlab CE 中不可用。
此外,从管理员的角度来看,能够根据其存储库存储路径快速找到存储库的项目 id,而不必启动“gitlab-rails 控制台”,这一点很重要。