Como consultar o GitHub para contribuições de usuários em um período específico · Chris Hager

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.

Como consultar o GitHub para contribuições de usuários em um período específico · Chris Hager

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.



Source link

Postagens Similares

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *