Github 分支保护规则,设置分支名称的模式
Posted
技术标签:
【中文标题】Github 分支保护规则,设置分支名称的模式【英文标题】:Github Branch protection rule, pattern for set branch names 【发布时间】:2021-10-05 04:37:23 【问题描述】:我正在尝试为我的 repo 上的 set 分支设置规则,但存在仅适用于特定分支的模式问题。 即规则仅适用于brances master,develop,release
问题:模式没有选择错误的分支
我尝试查看这里,但它按预期工作 https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch
我已经尝试过,但没有使用 0 个分支或选择的所有内容:
^.*(master).*$,^.*(develop).*$
[master,develop,release]
[master;develop;release]*
ps 这一个剂量相反,适用于所有支架,但列出的是:
*[!master|!develop|!release]*
【问题讨论】:
我的理解是,该模式是一个全局“表达式”,而不是您所解释的正则表达式。所以你可以做(比如说)release-*,但不能像你想做的那样=你必须有3个单独的规则。我对此的方法是,我认为单个规则更改是使用 github 操作编写脚本以使用 API 设置规则。但令人惊讶的是,该 API 甚至没有模式方法 - 您必须在您想要的每个分支上明确设置它。 【参考方案1】:我有一个解决方法,但我确信有更好的解决方案,或者解决这个问题。 我基本上使用规则的优先顺序,只使用我想要的规则设置分支。
我针对除我想要的分支之外的每个分支,并设置无规则。 然后将所有分支设置为要求我想要的规则应用于我的分支。 第一条规则是总统,并确保只有我想要的人才能获得规则。注意有一个 规则中提出的冲突,这似乎更像是一个警告
【讨论】:
【参考方案2】:作为johnfo says in a comment,GitHub 的分支保护规则模式不是正则表达式。事实上,the GitHub documentation 提到他们专门是Ruby File::FNM_PATHNAME style expressions。这是非常具体的(Git 本身根本不使用 Ruby 代码)。
我剪掉了git 标签;奇怪的是,您自己包含了fnmatch,对于可能希望在此处提供正确 Ruby 表达式的人来说,这是正确的标签。看起来 GitHub 没有设置 FNM_EXTMATCH
标志,因此您可能需要多个匹配表达式(也在上面的评论中注明)。除了添加一些链接似乎有用之外,我不会费心回答。
【讨论】:
以上是关于Github 分支保护规则,设置分支名称的模式的主要内容,如果未能解决你的问题,请参考以下文章
git命令——从GitHub clone XXX分支,本地创建新分支push到远程仓库