如何为GitLab群组内所有项目(含新建)统一设置合并提交默认模板
可行方案说明
存在无需逐项目手动配置的实现方式,根据你使用的GitLab版本不同,可选路径如下:
- GitLab 16.1及以上版本:原生群组级配置(最推荐)
该版本已上线群组级默认合并提交模板的继承能力,群组管理员完成一次配置后,群组下所有存量项目、后续新建的项目/子群组项目,只要没有单独修改过项目级的合并提交模板,都会自动继承这套统一配置,完全不需要逐项目调整。
配置操作路径:进入目标群组页面,打开「设置」-「通用」板块,找到合并请求相关配置项,定位到默认合并提交信息模板的输入框,直接填入你需要的模板内容保存即可。你需要的目标模板内容如下,所有占位符都是GitLab原生支持的,提交合并时会自动替换为对应实际内容,其中%{description}会直接拉取合并请求填写的描述正文,刚好匹配你需要自动带入提交正文的要求:
配置生效后,合并请求生成的默认提交信息会自动带入源分支/目标分支名、MR标题、MR描述正文、关联issue列表、MR编号引用,和你预期的效果完全一致。如果个别子项目需要特殊模板,单独修改对应项目的配置即可,不会影响群组内其他项目的统一规则。Merge branch '%{source_branch}' into '%{target_branch}' %{title} - %{description} %{issues} See merge request %{reference} - 16.1以下旧版本:批量配置+自动触发覆盖新项目
旧版本没有原生群组继承能力,可以通过两种方式实现批量配置,不用手动逐项目改:- 调用GitLab API批量操作:写简单脚本拉取群组下全量项目列表(递归包含子群组项目),逐个调用项目更新接口写入
merge_commit_template字段的模板内容即可完成存量项目配置;再给群组配置项目创建事件的系统钩子,触发时自动调用接口给新创建的项目写入统一模板,就能覆盖后续新增项目。 - 如果你是整个GitLab实例的管理员,可以直接在实例管理后台的合并请求全局配置中,设置实例级默认合并提交模板,所有未单独配置项目/群组模板的项目(含后续新建项目)都会默认使用这套模板。
- 调用GitLab API批量操作:写简单脚本拉取群组下全量项目列表(递归包含子群组项目),逐个调用项目更新接口写入
注意:不要通过在仓库中提交模板文件到
.gitlab/merge_request_templates/目录的方式配置,该目录下的文件是MR描述模板,不是合并操作生成的提交信息模板,既不支持你需要的分支、MR引用类占位符,也无法实现群组级自动继承。
内容的提问来源于stack exchange,提问作者Ezz Redfox
相关产品推荐
相关产品推荐

