Repozytoria organizacji
Aby sklonować wszystkie repozytoria z organizacji, wypróbuj następującą jednoliniową powłokę:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Repozytoria użytkowników
Klonowanie wszystkiego za pomocą adresów URL repozytorium Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Klonowanie wszystkiego za pomocą Clone URL:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
Oto przydatna funkcja powłoki, którą można dodać do plików startowych użytkownika (za pomocą curl
+ jq
):
# Usage: gh-clone-user (user)
gh-clone-user() {
curl -sL "https://api.github.com/users/$1/repos?per_page=1000" | jq -r '.[]|.clone_url' | xargs -L1 git clone
}
Prywatne repozytoria
Jeśli chcesz sklonować prywatne repozytoria, możesz dodać token autoryzacji w swoim nagłówku, na przykład:
-H 'Authorization: token <token>'
lub przekaż go w param ( ?access_token=TOKEN
), na przykład:
curl -s "https://api.github.com/users/$GHUSER/repos?access_token=$GITHUB_API_TOKEN&per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
Uwagi:
- Aby pobrać tylko prywatne repozytoria, dodaj
type=private
do ciągu zapytania.
- Innym sposobem jest użycie
hub
po skonfigurowaniu klucza API.
Zobacz też:
Wskazówki :
- Aby zwiększyć szybkość, ustaw liczbę równoległych procesów, określając -P
parametr dla xargs
( -P4
= 4 procesy).
- Jeśli chcesz zwiększyć limity GitHub, spróbuj uwierzytelnić się, określając klucz API.
- Dodaj --recursive
rekursję do zarejestrowanych modułów podrzędnych i zaktualizuj wszystkie zagnieżdżone moduły podrzędne.