Repositori organisasi
Untuk menggandakan semua repo dari organisasi Anda, coba shell one-liner berikut:
GHORG=company; curl "https://api.github.com/orgs/$GHORG/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Repositori pengguna
Menggandakan semua menggunakan URL repositori Git:
GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | xargs -L1 git clone
Mengkloning semua menggunakan 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
Berikut adalah fungsi shell yang dapat ditambahkan ke file startup pengguna (menggunakan 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
}
Repositori pribadi
Jika Anda perlu mengkloning repo pribadi, Anda dapat menambahkan token Otorisasi di header Anda seperti:
-H 'Authorization: token <token>'
atau berikan di param ( ?access_token=TOKEN
), misalnya:
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
Catatan:
- Untuk hanya mengambil repositori pribadi, tambahkan
type=private
ke string kueri Anda.
- Cara lain adalah menggunakan
hub
setelah mengonfigurasi kunci API Anda.
Lihat juga:
Petunjuk :
- Untuk meningkatkan kecepatan, atur jumlah proses paralel dengan menentukan -P
parameter untuk xargs
( -P4
= 4 proses).
- Jika Anda perlu meningkatkan batas GitHub, coba autentikasi dengan menentukan kunci API Anda.
- Tambahkan --recursive
untuk mengulang ke submodul terdaftar, dan perbarui setiap submodul bersarang di dalamnya.