2013-04-10 10 views
13

Desidero trovare il numero di commit eseguiti su specifici progetti github e all'interno di essi su file specifici. Ho controllato lo github api docs ma ho trovato solo un'API per restituire effettivamente tutti i commit. Questo sarebbe molto inefficiente dal momento che devo fare più chiamate API per il paging attraverso tutti i commit.github api: come trovare in modo efficiente il numero di commit per un repository?

Qualcuno ha un'idea migliore?

+0

vedi la mia risposta aggiornata. – VonC

+0

@drorw Ciao, potresti dirmi come hai integrato il token di accesso? – user6456773

risposta

9

Aggiornamento Maggio 2013: vedi "File CRUD and repository statistics now available in the API"

È ora possibile Get the last year of commit activity data

GET /repos/:owner/:repo/stats/commit_activity 

restituisce l'ultimo anno di attività commettere raggruppati per settimana. L'array di giorni è un gruppo di commit al giorno, a partire da domenica.

Non completamente quello che stai cercando, ma più vicino.


risposta Originale (aprile 2010)

No, l'API corrente non supporta un 'log --all' messa in vendita di tutti i commmits da tutti i rami.

L'unica alternativa è presentato in "Github API: Retrieve all commits for all branches for a repo", e la lista con tutte le pagine di tutti i commit, ramo dopo ramo.

Questo sembra così ingombrante di un'altra alternativa sarebbe in realtà a clone il repository Github e apply git commands on that local clone!
(principalmente git shortlog)

+0

Grazie per la risposta, speriamo che l'API possa essere migliorata qualche volta – drorw

+2

@drorw Se hai suggerimenti specifici o richieste di funzionalità riguardanti l'API, dovresti inviare un'e-mail al supporto di GitHub e fargli sapere: https://github.com/contatto –

+0

Grazie per l'aggiornamento, sicuramente più vicino – drorw

1

Con GraphQL API v4, è possibile ottenere impegnarsi conteggio totale per ramo con totalCount per ogni ramo:

{ 
    repository(owner: "google", name: "gson") { 
    name 
    refs(first: 100, refPrefix: "refs/heads/") { 
     edges { 
     node { 
      name 
      target { 
      ... on Commit { 
       id 
       history(first: 0) { 
       totalCount 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Test it in the explorer

Problemi correlati