背景:我在本地创建了master仓库,然后提交至gitlab远端仓库。然后删除gitlab默认的main分支,将default默认分支由main分支调整为master分支。并且同步从master创建了develop、release分支。
问题:默认保护分支已取消保护,暂无保护分支。在设置protected branch时,无法设置。提示 merge access levels are restricted to a single instance per protected branch。
是否可以详细的描述下您的操作步骤,软件版本等,此外此现象是仅某个仓库存在,还是群组范围或者实例范围?
版本是16.1,我又试了下,我在gitlab创建了project,默认分支main。因此我本地创建库以后,从master重命名main,然后推送到了远端gitlab的main分支。 然后我通过main分支创建了develop,release两个分支,在project view->settings->Repository->Protected branches 里面 Protect a branch, 选择添加release分支,点protect以后就报错提示 merge access levels are restricted to a single instance per protected branch。然后我以为是一个项目只允许一个分支设置protect就把默认的main保护分支去掉保护,去设置release分支,结果后面增加 main分支保护和release分支保护都加不起,报错提示merge access levels are restricted to a single instance per protected branch。
是重命名 master 为 main?不是 checkout 对吧?目前只有这一个项目有这个问题吗?
你是测试实例还是生产实例?
是 16.1.?
对,是重命名为main, git branch -M main,然后 git push -uf origin main推送到远端。 是刚搭建的测试环境。 gitlab 版本是 16.1
补丁版本是多少?16.1.2 ?
version: 16.1.0
我按照你说的步骤在 16.1.0试了一下,并没有复现出来这个问题,这里描述一下我的复现步骤:
- gitlab 创建一个带有自述文件(README.md)的空仓库
- 客户端初始化一个新仓库
git init forum-demo
- forum-demo 中创建新文件并创建提交
- 重命名分支 master 为 main,并添加origin
git remote add origin
且拉取远程仓库更新git pull origin main
- 推送本地仓库到远程仓库
git push origin main
- 以 main 为源分支,创建 release/develop 分支
- 添加 release 为保护分支,两个 Allowed 角色设置为 Maintainer,其他保持默认,点击
Protect
看下和你的操作步骤有差异吗?
我这边少了第4步,拉取远程仓库更新 git pull origin main。 我重新建库 按照你的步骤走一次试试,谢谢老师
客气了,那你试一下
我重试了还是不行。 我直接在gitlab上创建一个项目,然后去设置Protected branches就会报那个错。 我发现我的Branch rules设置项点击 expand展开没有任何信息,没有配置保护规则。 也没法定义保护规则。是我的gitlab没有启用branch rules 的这个功能吗? 该怎么启动呢。 然后我的项目设置中merge request的规则是默认的 没有改。 也看不出来,由那种角色审批等信息。
Add an approval rule
To add a merge request approval rule:
- Go to your project and select Settings > Merge requests.
- In the Merge request approvals section, scroll to Approval rules.
- Select Add approval rule.
- Add a human-readable Rule name.
- Select a Target branch:
- To apply the rule to all branches, select All branches.
- To apply the rule to all protected branches, select All protected branches (GitLab 15.3 and later).
- To apply the rule to a specific branch, select it from the list.
- Set the number of required approvals in Approvals required. A value of
0
makes the rule optional, and any number greater than0
creates a required rule. Maximum number of required approvals is100
. - To add users or groups as approvers, search for users or groups that are eligible to approve, and select Add. GitLab suggests approvers based on previous authors of the files changed by the merge request.
这些设置项都看不到…
我根据极狐文档中心的描述, 项目预览-》settings-》merge requests 里面没有 Approvals项,直接没法设置。 其他相关的信息都没法设置,感觉我的这个权限和审批的功能根本没有打开。
approvals 是专业版功能。但是保护分支不是,你升级到 16.1.2试一下。
你刚才用的是 16.1.2没有问题是吧
我这边测试了多个版本都没有出现你的这个问题
我这边尝试了一些方法,发现是浏览器缓存问题。 清理了缓存就可以了。