Repository dell'organizzazione
Per clonare tutti i repository dalla tua organizzazione, prova il seguente one-liner di shell:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Repository utente
Clonazione di tutti gli URL del repository Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Clonare tutto usando 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
Ecco l'utile funzione della shell che può essere aggiunta ai file di avvio dell'utente (usando 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
}
Repository privati
Se devi clonare i repository privati, puoi aggiungere il token di autorizzazione nell'intestazione come:
-H 'Authorization: token <token>'
o passalo nel param ( ?access_token=TOKEN
), ad esempio:
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
Appunti:
- Per recuperare solo i repository privati, aggiungili
type=private
alla stringa di query.
- Un altro modo è usare
hub
dopo aver configurato la tua chiave API.
Guarda anche:
Suggerimenti :
- Per aumentare la velocità, impostare il numero di processi paralleli specificando il -P
parametro per xargs
( -P4
= 4 processi).
- Se devi aumentare i limiti di GitHub, prova ad autenticarti specificando la tua chiave API.
- Aggiungi --recursive
per ricorrere ai sottomoduli registrati e aggiorna eventuali sottomoduli annidati all'interno.