2013-04-23 15 views

Odpowiedz

3

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.

Powiązane problemy