如何将github分支规则应用于两个分支?

Sra*_*raw 12 github

我的意思是我想指定多个分支,例如dev|master。但是看完文档后,我认为这是不可能的??我是否仅为了使用同一规则来保护两个分支就必须创建两个规则?

Z4-*_*ier 16

我发现这样做的丑陋方式至少会引起人们的注意(尽管@GitHub为我们提供比fnmatch关闭所有选项更好的东西会更好)。

您可以使用字符集来指定存储库名称中的开始字符,如下所示:

[dm][ea][vs]*
Run Code Online (Sandbox Code Playgroud)

它会匹配dev,master这就是您想要的,但是由于通配符,它​​也会匹配“ mastodon-rules”和“ devo-is-my-favorite-band”。我不认为fnmatch给您像正则表达式?这样的“零或一”量词,因此它是限制性的。

Github fnmatch 确实允许否定字符集,因此,如果规则捕获了您不希望包含的分支,则可以解决该问题:

[dm][ea][vs][!o]
Run Code Online (Sandbox Code Playgroud)

这会错过dev分支,但至少在与您的Metalhead好友进行的下一个通宵节拍会议期间,至少不会“鞭打它”。

诚然,这不是一个非常令人满意的解决方案。但是使用fnmatch可能是最好的选择。

  • 不是我期望的答案,我必须贡献的只是 [w][t][f]* (4认同)
  • 好,总比没有好。 (3认同)
  • 不幸的是,这种格式有点过于激进,并且捕获了我不一定想要保护的分支。 (3认同)
  • 比为同一件事创建三个不同的规则更好! (2认同)
  • @kian我最初没有包括它,但是github允许否定字符集。我在回答中添加了语法。希望有帮助:) (2认同)
  • 我只是想知道为什么 Github 不使用正则表达式来做这件事。 (2认同)
  • `[dm][ea][vi][!o]*` 用于 `develop` 和 `main`! (2认同)
  • 这是难以忍受的复杂性,感觉只是一些 GitHub 工程师为努力工作辩护的借口。老实说,我无法理解这样做的任何其他理由。 (2认同)

foa*_*esm 8

今天早上也一直试图解决这个问题,我相信你(/我们)可能不得不奇怪地为每个分支创建两个相同的规则。至少这是我在阅读后相信的:

https://github.community/t5/How-to-use-Git-and-GitHub/Apply-a-single-branch-protection-rule-to-both-master-and-release/td-p/11587

主持人评论:

“不,在“将规则应用于”框中没有办法做到这一点。如受保护的分支文档中所述,我们使用 fnmatch 库将分支名称与匹配表达式匹配。有一个功能允许如果启用了标志但我们没有在我们的环境中启用该标志,则可以匹配两个规则。”

或者,如果您想将一个规则应用于以相同匹配短语开头或包含相同匹配短语的所有分支,则可以使用此解决方案:

https://github.community/t5/How-to-use-Git-and-GitHub/Branch-Protection-on-multiple-branches/td-p/10519

来自社区经理的评论:

分支保护规则模式基于 fnmatch 语法。你可以使用releases/v?.? 自动保护releases/v1.0、releases/v2.0和releases/v2.1等分支。而 [1-9]-[0-9]-stable 可以自动保护分支,如 1-0-stable、2-0-stable 和 2-1-stable。


dan*_*h03 7

以下 z4-tear 的精彩解释将涵盖development master和staging

[dms][tea][avs]*[iet][ne][gtr]
Run Code Online (Sandbox Code Playgroud)

  • 仍然允许“保存”、“杀死大师”、“催眠”、“稍后道歉”、“座位”和“会话测试”。但可以肯定的是,匹配分支的集合较小。 (3认同)

Jac*_*ana 7

要应用于所有,请添加 -->**/**