Como consultar o GitHub para contribuições de usuários em um período específico · Chris Hager
Eu precisava encontrar todos os repositórios públicos do GitHub para os quais um usuário contribuiu dentro de um período de tempo específico e queria compartilhar – e registrar para mim mesmo – a consulta de API que aprendi.
Isso pode ser útil para gerar relatórios, acompanhar o progresso, analisar atividades durante um determinado período e muito mais.

Use a API GraphQL do GitHub
Aproveitamos a API GitHub GraphQL para obter a lista de repositórios públicos para os quais um usuário contribuiu dentro de um período de tempo específico, usando o contributionsCollection campo para especificar um intervalo de tempo e recuperar contribuições feitas por um usuário durante esse período.
Aqui está a consulta (substituir metachris com o nome de usuário desejado e ajuste o from e to datas conforme necessário):
gh api graphql -f query='
{
user(login: "metachris") {
contributionsCollection(from: "2024-01-01T00:00:00Z", to: "2024-12-31T23:59:59Z") {
commitContributionsByRepository {
repository {
nameWithOwner
}
contributions {
totalCount
}
}
}
}
}' --jq '.data.user.contributionsCollection.commitContributionsByRepository().repository.nameWithOwner'
A saída é uma lista simples de nomes de repositórios.
Incluir contagens de commits e saída de formato
Melhor ainda, podemos incluir o número de commits por repositório e formatar a saída para ser mais legível. Isso só precisa de uma ligeira modificação no --jq parte do comando, que é deliciosamente flexível:
gh api graphql -f query='
{
user(login: "metachris") {
contributionsCollection(from: "2024-01-01T00:00:00Z", to: "2024-12-31T23:59:59Z") {
commitContributionsByRepository {
repository {
nameWithOwner
}
contributions {
totalCount
}
}
}
}
}' --jq '.data.user.contributionsCollection.commitContributionsByRepository() | "\(.repository.nameWithOwner | .(0:50) + (" " * (50 - (. | length)))) \(.contributions.totalCount) commits"'
Esta é a saída:
BuilderNet/website 84 commits
flashbots/system-api 57 commits
flashbots/relayscan 42 commits
flashbots/builder-hub 37 commits
metachris/website 23 commits
flashbots/mev-boost 20 commits
flashbots/suave-docs 19 commits
flashbots/rbuilder 17 commits
flashbots/op-rbuilder 15 commits
flashbots/cvm-reverse-proxy 13 commits
flashbots/go-bob-firewall 12 commits
flashbots/go-template 12 commits
flashbots/mempool-dumpster 10 commits
flashbots/go-utils 8 commits
flashbots/rbuilder-relay-measurement 6 commits
flashbots/mev-boost-relay 6 commits
flashbots/suave-geth 4 commits
flashbots/buildernet-orderflow-proxy 3 commits
flashbots/suave-specs 3 commits
flashbots/prio-load-balancer 2 commits
flashbots/flashbots-docs 1 commits
flashbots/flashbots-writings-website 1 commits
ethereum/builder-specs 1 commits
flashbots/rpc-endpoint 1 commits
metachris/flashbotsrpc 1 commits
🎉
Espero que isso seja útil para você como foi para mim! Se você tiver alguma dúvida, sugestão ou feedback, sinta-se à vontade para entrar em contato ou deixar um comentário abaixo.
