Repositorios de organizaciones
Para clonar todos los repositorios de su organización, pruebe la siguiente línea de shell:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Repositorios de usuarios
Clonando todo usando las URL del repositorio de Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Clonando todo usando Clonar 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
Aquí está la función de shell útil que se puede agregar a los archivos de inicio del usuario (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
}
Repositorios privados
Si necesita clonar los repositorios privados, puede agregar el token de autorización en su encabezado como:
-H 'Authorization: token <token>'
o pasarlo en el param ( ?access_token=TOKEN
), por ejemplo:
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
Notas:
- Para obtener solo repositorios privados, agréguelo
type=private
a su cadena de consulta.
- Otra forma es usarlo
hub
después de configurar su clave API.
Ver también:
Sugerencias :
- Para aumentar la velocidad, establezca el número de procesos paralelos especificando el -P
parámetro para xargs
( -P4
= 4 procesos).
- Si necesita aumentar los límites de GitHub, intente autenticarse especificando su clave de API.
- Agregue --recursive
a recurse en los submódulos registrados y actualice los submódulos anidados dentro.