如何在 Github 的 GraphQL API 上获取包含某个分支的所有存储库



我有很多存储库,其中一些存储库包含一个同名的分支。我希望能够获取所有包含特定分支名称的存储库。这就是我目前所掌握的内容,但我似乎不知道如何添加必要的查询。

{
repositoryOwner(login: "dev") {
repositories(first: 1) {
nodes {
name
refs(first: 15, refPrefix: "refs/heads/") {
edges {
node {
name
}
}
}
}
}
}
}

如有任何帮助,我们将不胜感激。

一种方法是请求所有引用qualifiedName<branch_name>的存储库。然后在您的客户端删除所有空结果:
{
repositoryOwner(login: "JakeWharton") {
repositories(first: 100) {
nodes {
ref(qualifiedName: "gh-pages") {
repository {
name
description
}
}
}
}
}
}

在浏览器中尝试

用curl&jq来排除null结果,它将是:

curl -s -H "Authorization: token YOUR_TOKEN" 
-d '{ 
"query": "{ repositoryOwner(login: "JakeWharton") { repositories(first: 100) { nodes { ref(qualifiedName: "gh-pages") { repository { name } } } } } }"
}' https://api.github.com/graphql | 
jq -r '.data.repositoryOwner.repositories.nodes[] | select(.ref != null) | .ref.repository.name'

如果有超过100个转发,你将不得不进行分页

如果您需要在单个repo(或其中一个(中找到分支名称的组合,也可以使用别名。例如,查找分支gh-pages&1.0:

{
repositoryOwner(login: "JakeWharton") {
repositories(first: 100) {
nodes {
branch1: ref(qualifiedName: "1.0") {
repository {
name
description
}
}
branch2: ref(qualifiedName: "gh-pages") {
repository {
name
description
}
}
}
}
}
}

在浏览器中尝试

最新更新