我在我的服务器上本地设置了Gitlab。我注意到,当我在某些存储库中向“post-receive”文件添加一些代码时,所有更改都应用于该组中的所有其他存储库。
如何阻止它?
答案 0 :(得分:1)
检查" Custom Git hooks setup":
通常,Git钩子放在存储库或项目的钩子目录中。 GitLab从每个项目的hooks目录创建一个符号链接到gitlab-shell hooks目录,以便于gitlab-shell升级之间的维护。
这解释了为什么您的钩子似乎传播到该组的所有回购。
按照以下步骤设置自定义挂钩:
- 选择需要自定义Git挂钩的项目。
- 在GitLab服务器上,导航到项目的存储库目录。对于从源安装,路径通常为
/home/git/repositories/<group>/<project>.git
对于Omnibus安装,路径通常为/var/opt/gitlab/git-data/repositories/<group>/<project>.git
。- 在此位置创建名为
custom_hooks
的新目录。- 在新的custom_hooks目录中,创建一个名称与钩子类型匹配的文件 对于
pre-receive
挂钩,文件名应为pre-receive
,不带扩展名。- 使钩子文件可执行,并确保它由git拥有。
- 编写代码以使Git钩子功能按预期进行