Hier ist, wie ich es tun würde:
- Verwendung der GitHub API die Repositories (siehe JSON for Plone für ein Beispiel) aufzuzählen. Schleife über das JSON-Ergebnis und mit jedem:
- Überprüfen Sie das Repository (die
git_url
URL) mit git clone --bare
; nur die Git Info, keine Arbeitskopie. Dies erstellt ein <repository_name>.git>
Verzeichnis, sagen plone.event.git
, wenn Sie git://github.com/plone/plone.event.git
geklont haben.
- Die Revisionen mit
git --git-dir=<git_directory> rev-list HEAD --count
zählen; gibt die Zählung an stdout aus, also sollte subprocess.check_output()
die Arbeit gut machen.
- Entfernen Sie die
.git
Verzeichnis wieder
, dass nur 2 API-Aufrufe erfordert, Sie vermeiden so Rate begrenzt ist; Das Paging durch alle Commits mit der API würde zu viele Anfragen erfordern, um alle Repository-Commits zu zählen, das Auschecken einer leeren Repository-Kopie wäre sowieso schneller.