代码之家  ›  专栏  ›  技术社区  ›  Sraw

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

  •  3
  • Sraw  · 技术社区  · 6 年前

    我的意思是我想指定多个分支,比如 dev|master . 但是看过医生之后,我觉得这是不可能的??我是否必须创建两个规则才能使用相同的规则来保护两个分支?

    1 回复  |  直到 5 年前
        1
  •  57
  •   Z4-tier    3 年前

    我发现了一种相当丑陋的方法,至少能达到大概的效果(尽管如果@GitHub能给我们提供比这更好的东西会更好) fnmatch

    (Using "main" branch): [dm][ea][vi]*
    (Using "master" branch): [dm][ea][vs]*
    

    它会匹配的 dev main / master fnmatch 给你一个“零或一”量词,比如正则表达式 ? 所以这是相当严格的。

    允许对字符集求反,因此,如果规则正在捕获您不希望包含的分支,您可能可以绕过该问题:

    (using "main" branch): [dm][ea][vi][!o]*
    (using "master" branch): [dm][ea][vs][!o]*
    

    这将错过比赛 发展 树枝(它会抓住的) develop 主要的 / 主人

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

        2
  •  8
  •   foakesm    6 年前

    今天早上我也一直在想办法,我相信你(/我们)可能不得不为每个分支创建两个相同的规则,这很奇怪。至少在通读之后我相信:

    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语法。你可以 使用版本/v?。?自动保护分支,如 [1-9]-[0-9]-stable可以自动保护分支,如

        3
  •  -3
  •   alacret    3 年前

    它们已经启用了通配符。因此,这种模式是有效的:

    [main,qa,stage,master]*
    
        4
  •  -7
  •   chharvey    4 年前

    根据 GitHub documentation ,他们使用 fnmatch

    {a,b}

    匹配模式 a b 如果 File::FNM_EXTGLOB 标志已启用。行为类似于Regexp联合( (?:a|b)

    对于您的问题,您正在寻找的模式可能是 {dev,master} .

    我不知道他们所说的“如果”是什么意思 文件::FNM_EXTGLOB 标志已启用,因此这可能不起作用。