ローカルのリポジトリ管理どうしてますか?
みなさん、Git使ってますか?使ってますよね? 今時ファイルやディレクトリに日付を書いて手動バージョン管理しているような人は、 今すぐGitに入門しましょう。便利ですよ。
GitのリモートリポジトリにはGitHubを使うのがど定番です。 まだGitHubのアカウント持ってないよ!って人は是非次の記事を参考にしてみてください(宣伝)。
さて、Gitでソースコードを管理できるようになったとして、 ローカルリポジトリってどこに置こう?とか、考えたことないですか? 自身のPCのあっちこっちにリポジトリが散乱してたら美しくないですし、 かといって一箇所に管理してリポジトリ名がバッティングしたら目も当てられないですよね。
本記事では、そんな悩みをもつみなさんにナイスなソリューションを提供します!
といっても、タイトルにあるghq
とpeco
の組み合わせなんてQiitaに腐る程情報がある、知り尽くされた情報です。
何番煎じかわからない記事なので、今すぐブラウザバックしてご自身で探していただいて構いません。
Gitのリポジトリ管理にghqを使う
ghqはローカルリポジトリをスマートに管理することができるコマンドです。 具体的には、GitHubなどリモートリポジトリをクローンする際、一貫性のあるディレクトリ構造を作ってクローンします。
ghqのインストール
ghqコマンドはHomebrewでサクッとインストールできます。
$ brew install ghq
ghqはGoで書かれたパッケージなので、go get
でもインストールできます。
Goの環境がある方はこちらの方がいいかもしれません。
$ go get github.com/motemen/ghq
ghqの初期設定
ghqはひとつのディレクトリ以下にすべてのローカルリポジトリを格納します。
特に設定しない場合、$HOME/.ghq
となります。
このままで全然支障はありませんが、もしディレクトリを変更したい場合は次のように設定することができます。
例えば$HOME/src
としたい場合は、次のように実行します。
$ git config --global ghq.root $HOME/src
ghqを使ってみる
リポジトリをクローンするには、git clone
の代わりにghq get
を使います。
$ ghq get <repository URL> | <user>/<project>
ghqがイケてるのは、公開リポジトリであればURLを全入力しなくても<user>/<project>
の形式でクローンできるところです。
残念ながら、というか当然ながらプライベートなリポジトリはこうはいかないので、
プライベートリポジトリをクローンしたい場合はSSHのURLをまるっと渡してあげます。
$ ghq get git@github.com:furusax0621/dotfiles.git
ghqで管理しているリポジトリを確認する
ghqでクローンしたリポジトリは次のようなディレクトリ構造で管理されます。 リモートのホスト名やユーザー毎にディレクトリを掘るので、同名のリポジトリを複数クローンしてもバッティングしません!すごい!
src (ghq root) | | -- code.google.com/ | `-- p/ | `-- vim/ `-- github.com/ | -- furusax0621/ | | -- dotfiles/ | | -- prezto/ | `-- tour-of-go/ `-- nukata/ `-- linq-in-go/
これ、GoにおけるGOPATH
と同じ構造なんですよね。
会社の先輩曰く、そもそもghqってGoのパッケージ管理のためのパッケージらしいです。なるほど。
ghqで管理しているリポジトリの一覧はghq list
と実行すれば簡単に取得できます。
$ ghq list code.google.com/p/vim github.com/furusax0621/dotfiles github.com/furusax0621/prezto github.com/furusax0621/tour-of-go github.com/nukata/linq-in-go
もっとスマートに管理するためにpecoを使う
ghqで無事一箇所にリポジトリを格納できるようになりました。 が、上述のとおりホスト名/ユーザー名でディレクトリが階層化されています。 作業するたびにこれをいちいちターミナルで掘っていくのはダルすぎますよね?
pecoは標準入力されたテキストをインクリメンタルサーチしてくれる非常にナイスなコマンドです。 これを組み合わせることで、超スマートなリポジトリ管理を実現できます。
pecoのインストール
こちらもHomebrewでサクッとインストールできます。
$ brew install peco
リポジトリを管理するコマンドを記述する
pecoをインストールしたら、自身の.bashrc
などに次のようなエイリアスを貼ってみましょう。
alias gs='cd $(ghq root)/$(ghq list | peco)'
エイリアス名となるgs
は適当です。ご自身で覚えやすい、かつ叩きやすいエイリアス名を考えてください。
で、これを叩くとどうなるかというと、こうなります。
すごい!リポジトリを検索しつつ、簡単にリポジトリへ移動できるようになった!
このエイリアスを叩くタイミングでghq root
を参照するので、git config
でghq.root
を変更してもちゃんと追随します。
カレントディレクトリやghq.root
の設定を全く意識することなくローカルリポジトリを管理できます。
おわりに
というわけで、何番煎じになるかわかりませんがghqとpecoを使ったGitのローカルリポジトリ管理方法でした。 こういう細かい技をちゃんと使っていると、エンジニアとして生産性上がっている気がしますよね。 インターネットにこういった便利な技はたくさん公開されているので、たくさん吸収して周囲にドヤれるエンジニアになりましょう。