Organizasyon havuzları
Kuruluşunuzdaki tüm depoları klonlamak için aşağıdaki kabuk tek satırlık uygulamayı deneyin:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Kullanıcı veri havuzları
Tümünü Git depo URL'lerini kullanarak klonlamak:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Tümünü Klonlama URL'si kullanarak klonlama:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git' | xargs -L1 git clone
Kullanıcının başlangıç dosyalarına ( curl
+ kullanılarak jq
) eklenebilecek kullanışlı kabuk işlevi :
# 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
}
Özel havuzlar
Özel depoları klonlamanız gerekiyorsa , başlığınıza aşağıdaki gibi Yetkilendirme jetonu ekleyebilirsiniz :
-H 'Authorization: token <token>'
veya param ( ?access_token=TOKEN
) olarak iletin , örneğin:
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
Notlar:
- Yalnızca özel depoları getirmek
type=private
için sorgu dizenize ekleyin .
- Başka bir yol,
hub
API anahtarınızı yapılandırdıktan sonra kullanmaktır .
Ayrıca bakınız:
İpuçları :
- Hızı artırmak -P
için, xargs
( -P4
= 4 işlem) için parametre belirleyerek paralel işlemlerin sayısını ayarlayın .
- GitHub sınırlarını yükseltmeniz gerekiyorsa, API anahtarınızı belirterek kimlik doğrulamayı deneyin.
- --recursive
Kayıtlı alt modülleri yinelemek için ekleyin ve içindeki iç içe geçmiş alt modülleri güncelleyin.