はじめに
peco, hubは前から使っててghqは存在は知りながらも「別にリポジトリ管理は必要ないかなー」と思ってたのですが、管理するリポジトリ数が増えてきて面倒になってきたので試しに入れてみたらかなり良かったので紹介したいと思います
ghq, peco, hubとは?
ghq
ghqは上でも軽く書いたようにリポジトリ管理ツールになります。
例えばgit clone
の代わりにghq get <repository URL>
とコマンドを打つとghqルートディレクトリ(デフォルトでは~/.ghq
)以下にリポジトリがcloneされ、
ghq list
でghqルートディレクトリ以下のGitリポジトリ一覧を表示、
ghq look <project>
で指定したリポジトリに移動する、といったように使います。
peco
pecoは文章で説明するのは難しいのですが、CLI上で例えばps aux
などのようにリスト表示されるものをインクリメンタルサーチできるようにするものです。
詳しくはGithub参照ということで
https://github.com/peco/peco
hub
hubはGithubをCLI上で操作するためのツールです。
本記事ではhub browse
(Githubで指定したリポジトリを開く)をするためだけに利用します。
インストール
全てGo製のライブラリなのでgo get
していただくか、もしくは全てhomebrewでもインストールできるのでそちらでやっていただければOKです
ghq
$ brew install ghq
# or
$ go get github.com/motemen/ghq
peco
$ brew install peco
# or
$ go get github.com/peco/peco/cmd/peco
hub
$ brew install hub
# or
$ go get github.com/github/hub
やったこと
各ツールの基本的な使い方は各公式サイトをご覧ください。
今回、僕はghqで管理しているリポジトリをpecoを使って選択し、ローカル・リモート両方に移動できるようにしました。
結論から言いまして、以下2つのエイリアスでこれを実現しました。
alias g='cd $(ghq root)/$(ghq list | peco)'
alias gh='hub browse $(ghq list | peco | cut -d "/" -f 2,3)'
ローカルリポジトリへの移動: $ cd $(ghq root)/$(ghq list | peco)
ローカルリポジトリへの移動なのですが、これは上記にもある通りghq look
でもできます。
ghq look
はプロジェクト名のサジェストもできるのでこれでもいいと言えばいいのですが、インクリメンタルサーチが欲しかったのとghq look
の動作が微妙に遅いという理由があり、このようなコマンドに至りました。
$(ghq root)
ghqのルートディレクトリを返してくれます
$(ghq list | peco)
ghq list
をpecoでインクリメンタルサーチできるようにしています
ghq list
は'-p'オプションでフルパスで一覧表示を、--unique
オプションでプロジェクト名のみの一覧表示をしてくれます。
-p
は個人的には冗長で嫌、--unique
ではインクリメンタルサーチする時にユーザー名で絞り込めず不便、ということでオプションは無しにしています。
フルパス表示で特に問題ないならghq root
は無しでcd $(ghq list -p | peco)
で大丈夫ですし、プロジェクト名だけでよくてかつghq look
の速度が気にならないならghq look $(ghq list --unique | peco)
でも良さそうです。
リモートリポジトリへの移動: $ hub browse $(ghq list | peco | cut -d "/" -f 2,3)
hub browse <user>/<repository>
Githubの指定したリポジトリを開きます
cut -d "/" -f 2,3
ghq list
での表示は例えばRubyのリポジトリだと"github.com/ruby/ruby"のようになります。
hub browse
では頭の'github.com/'はいらないため、cutで2~3個目の要素(ruby/ruby
)を切り出しています。
まとめ
以上のようにghq, peco, hubを使うことでGitリポジトリの管理と移動を便利にすることができました!
もしリポジトリの管理が面倒だったり「あのリポジトリどこに作ったっけ・・・」みたいなことが起きているならば使ってみてはいかがでしょうか?
宣伝
クラウドワークスでは働き方に革命を起こしたいエンジニアを募集しております!
興味のある方はとりあえずお話だけでもいかがでしょうか?