Сховища організації
Щоб клонувати всі репозиторії з вашої організації, спробуйте такий одношаровий вкладиш:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Репозиторії користувачів
Клонування всіх, що використовують URL-адреси сховища Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git 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
Ось корисна функція оболонки, яку можна додати до завантажувальних файлів користувача (за допомогою 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
}
Приватні сховища
Якщо вам потрібно клонувати приватні репозиторії, ви можете додати маркер авторизації в заголовок, наприклад:
-H 'Authorization: token <token>'
або передайте його в param ( ?access_token=TOKEN
), наприклад:
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
Примітки:
- Щоб отримати лише приватні сховища, додайте
type=private
у рядок запитів.
- Інший спосіб - використовувати
hub
після налаштування ключа API.
Дивитися також:
Підказки :
- Щоб збільшити швидкість, встановіть кількість паралельних процесів, вказавши -P
параметр для xargs
( -P4
= 4 процеси).
- Якщо вам потрібно підвищити обмеження GitHub, спробуйте автентифікацію, вказавши свій ключ API.
- Додати --recursive
для повторного запису в зареєстровані підмодулі та оновлення будь-яких вкладених підмодулів у межах.