2013-04-23 19 views

risposta

3

Ecco come lo farei:

  • utilizzare l'API GitHub per enumerare i repository (vedi JSON for Plone per un esempio). Effettua il loop sul risultato JSON e con ciascuno:
    • Controlla il repository (l'URL git_url) con git clone --bare; solo le informazioni git, nessuna copia funzionante. Ciò crea una directory <repository_name>.git>, ad esempio plone.event.git se è stata clonata git://github.com/plone/plone.event.git.
    • Contare le revisioni con git --git-dir=<git_directory> rev-list HEAD --count; restituisce il conteggio allo stdout, quindi subprocess.check_output() dovrebbe fare il lavoro bene.
    • Rimuovere il .git directory nuovamente

che richiede solo 2 chiamate API, in modo da evitare di essere tasso limitato; sfogliare tutti i commit con l'API richiederebbe troppe richieste per contare tutti i commit del repository, controllando comunque che una copia del repository nuda sarebbe più veloce in ogni caso.

Problemi correlati