You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Codeowner筛选GitHub组织下的仓库?

筛选GitHub组织中包含指定代码所有者的仓库

要实现基于.github/CODEOWNERS文件的仓库筛选,GH CLI本身没有直接的内置命令,需要结合shell脚本循环检查每个仓库的CODEOWNERS内容。以下是具体实现方法:

核心思路

  1. 获取组织下所有仓库的名称列表
  2. 逐个仓库拉取.github/CODEOWNERS文件内容
  3. 检查文件中是否包含目标代码所有者(如@organization_name/team_name)
  4. 输出符合条件的仓库

具体脚本实现

假设你的组织名为your-org,目标代码所有者团队为@your-org/target-team,可以用以下bash脚本:

# 定义组织名和目标团队
ORG="your-org"
TARGET_TEAM="@your-org/target-team"

# 获取组织下所有仓库名称,循环检查
gh repo list "$ORG" --json name --jq '.[].name' | while read -r REPO; do
  # 拉取CODEOWNERS文件并检查是否包含目标团队,忽略无该文件的仓库
  if gh repo view "$ORG/$REPO" --file .github/CODEOWNERS 2>/dev/null | grep -q "$TARGET_TEAM"; then
    echo "$ORG/$REPO"
  fi
done

细节说明

  • gh repo list "$ORG" --json name --jq '.[].name':只输出组织下所有仓库的名称,减少不必要的输出
  • gh repo view "$ORG/$REPO" --file .github/CODEOWNERS:直接拉取指定仓库的CODEOWNERS文件内容
  • 2>/dev/null:忽略仓库不存在CODEOWNERS文件时的错误提示
  • grep -q:静默检查,只返回匹配状态,不输出匹配内容

扩展优化

如果需要同时检查根目录或docs/目录下的CODEOWNERS文件,可以修改检查逻辑:

gh repo list "$ORG" --json name --jq '.[].name' | while read -r REPO; do
  # 依次检查三个常见的CODEOWNERS路径
  for PATH in ".github/CODEOWNERS" "CODEOWNERS" "docs/CODEOWNERS"; do
    if gh repo view "$ORG/$REPO" --file "$PATH" 2>/dev/null | grep -q "$TARGET_TEAM"; then
      echo "$ORG/$REPO"
      break  # 找到匹配后跳出当前仓库的检查循环
    fi
  done
done

内容的提问来源于stack exchange,提问作者Chris Johnston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:40:26