最初に結論から
hubとghqを利用すると、orgs配下の全てのリポジトリをcloneすることができます。 転職したときなど、新しいorgに参加した際の初期セットアップの際に便利です。
導入の動機は?
転職した会社のリポジトリをとりあえず全部cloneしようと思ったけど、100以上リポジトリがあった。 100回以上git clone唱えるのが嫌だったので、一括でできる方法を探した。
手順をご紹介
まずは、事前準備
参考までに、~/.gitconfig 内にこういう風に書くと、ghqのrootディレクトリを ~/ghqに設定できます。
[ghq] root = ~/ghq
orgsの全リポジトリを実際にcloneするコマンドを順に紹介
hub api orgs/{あなたのorgの名前}/repos | jq --raw-output '.[].full_name' > repolist.txt
ページングを利用する場合(100件ずつ)
hub api orgs/{あなたのorgの名前}/repos\?per_page=100\&page=1 | jq --raw-output '.[].full_name' > repolist.txt hub api orgs/{あなたのorgの名前}/repos\?per_page=100\&page=2 | jq --raw-output '.[].full_name' >> repolist.txt
- repolist.txtから、全件リポジトリをcloneする
cat repolist.txt | ghq get --parallel -p
結果
ghqのrootディレクトリが仮に ~/ghq/
に設定されているとすると、 ~/ghq/github.com/{あなたのorgの名前}/
配下に、全てのリポジトリがcloneされているはずです!