Oto jak ja to zrobię:
- wykorzystanie API GitHub wyliczyć repozytoriów (patrz JSON for Plone na przykład). Zapętlaj wynik JSON i za każdym razem:
- Sprawdź repozytorium (adres URL
git_url
) pod numerem git clone --bare
; tylko informacje git, brak kopii roboczej. Spowoduje to utworzenie katalogu <repository_name>.git>
, na przykład plone.event.git
, jeśli sklonowano git://github.com/plone/plone.event.git
.
- Policz wersje z
git --git-dir=<git_directory> rev-list HEAD --count
; wyprowadza liczbę do stdout, więc subprocess.check_output()
powinno wykonać zadanie dobrze.
- Usuń katalog ponownie
To wymaga tylko 2 wywołań API, dzięki czemu uniknąć szybkość ograniczona .git
; wywoływanie wszystkich zatwierdzeń za pomocą interfejsu API wymagałoby zbyt wielu żądań, aby zliczać wszystkie zatwierdzenia repozytorium, a sprawdzenie kopii nagiego repozytorium byłoby i tak szybsze.