Carpe Diem

備忘録

MacでのGithubリポジトリのcloneを自動化

背景

パソコンを新調した時に大変なのが

です。

前者に関してはhomebrewが提供しているbrew bundleである程度対応できます。

後者でghqはdump, restore的な機能ってあるのかな?と思って探したのがこの記事のきっかけです。

環境

方法

ghqlistimport(getに統合されました)といった機能を提供しています。

dump

ghq list > .ghqlist

でcloneしたリポジトリの一覧が出せます。
※ファイル名は任意です

restore

先ほど作成したバックアップファイル.ghqlist

cat .ghqlist | ghq get

とすれば順にcloneしてくれます。

シェルスクリプトにする

シェルスクリプトにして簡単に実行できるようにしましょう。
加えてdotfilesとしてgithubでバージョン管理していれば、新しいMacにしてからもすぐに移行できるようになります。

ghq_dump.sh

#!/bin/bash

ghq list | grep github.com | sort > .ghqlist

先ほどと違うのは

  • grepを入れてる
  • sortしている

点です。
grepの方はgo getで公式パッケージなど開発するもの以外が入ってしまうのを除外しています。
sortの方はghq listが特に順序を保証しないので、バージョン管理した際にリポジトリの位置が毎回コロコロ変わって大量の変更点が出てしまうからです。

ghq_import.sh

#!/bin/bash

cat .ghqlist | ghq get

こちらは先ほどと同じです。

ソース