如何通过Github GraphQL API按正则匹配查询分支保护规则?
完全可行,你的查询需要调整几个细节
- 正则表达式写法要修正:你写的
feature/*不符合标准正则语法,改成feature/.*才能正确匹配所有以feature/开头的分支。 - 分支保护规则有两种存在形式:一种是绑定到单个分支的,另一种是直接基于分支模式(比如
feature/*)创建的规则(会自动应用到所有匹配分支)。如果想覆盖这两种情况,可以调整查询同时获取:
query RepositoryBranchProtections { repository(name: "test", owner: "biologeek") { # 获取所有符合正则的单个分支及其绑定的保护规则 refs(refPrefix: "refs/heads/", first: 99, query: { regex: "feature/.*" }) { nodes { name branchProtectionRule { id pattern pushAllowances(last: 99) { nodes { actor { ... on User { email login name } ... on Team { name slug } } } } } } } # 获取直接针对feature/*模式设置的分支保护规则 branchProtectionRules(first: 99, query: { pattern: "feature/.*" }) { nodes { id pattern pushAllowances(last: 99) { nodes { actor { ... on User { email login name } ... on Team { name slug } } } } } } } }
补充说明:
- 如果只需要单个分支的保护规则,保留
refs部分即可,记得把正则改成feature/.*。 - 加上
Team片段是因为推送权限经常会分配给团队,不止单个用户,这样能拿到完整的权限信息。
内容的提问来源于stack exchange,提问作者Biologeek
相关产品推荐
相关产品推荐

