ローカルでソースコードを効率よく管理するためのツールとして、ghq
コマンドがある。
そのghq
コマンドの使い方をメンテナの@songmuさんが執筆したghq handbookを読んだので感想をまとめる。
所感
コンパクトで大変わかりやすい一冊だった。私は少なくても3年以上ghq
を使っている。
すでにghq
コマンドを利用している人も、初めて使う人もぜひ読んでおくべき1冊だ。手を動かさなければボリューム的には30分もかからず読み終わるだろう。
やりたいことベースで節が書かれているので、さっと気になるところから読めるのもよかった。
「どんなことをしたいのか?(例:会社のリポジトリは別の場所でディレクトリで管理したい etc)」を思い浮かべながら目次をたどれば読むべきページががわかるだろう。
私はあまり英語が得意でなかったり、zshrc
をうまく書けないので、peco
やfzf
のようなfuzzy finder
との連携のベストな設定などを知れてよかった。
どんな本なのか
ghq
コマンドというのは、GitHubなどのVCSサイトからのリポジトリの取得と、ローカルPC内のリポジトリ管理を劇的にラクにしてくれるツールだ。
私は、Go以外のリポジトリも全てghq
コマンドで管理している。いちいちディレクトリ構造を頭に浮かべながらcd
コマンドで移動することはなくなった。
ghq
コマンドのv1.0.0バージョンリリースに合わせて、メンテナの@songmuさんが使い方をまとめてくださったのが本書だ。
ghq handbookはleanpub.com
というサイトから購入することもできるし、GitHub上でMarkdownを読むこともできる。
なぜ読もうと思ったのか
私は今までなんとなくghq get
コマンドとghq list + peco
連携を使っていたので、改めてちゃんとした使い方を知るために読んだ。
私にとってghq
コマンドは、jq
やrg
、peco
/fzf
コマンドと並んで無くてはならないコマンドラインツールだったので日々の感謝の気持ちを込めてleanpub.com
で購入させてもらった。
余談だが、初めてleanpubを使ってみたがsend to kindle
(iPadなどのKindleアプリに電子書籍を送信する)がサイト上からワンクリックで簡単に出来たり、なかなか良かった。
(Amazon上で予めleanpubからのメール受信を許可しておくのと、メルアドを登録したから少し時間が必要)
読んでわかったこと
さっそく本を購入するにあたって最新のghq
コマンドにした。
macOSならばbrew upgrade ghq
コマンドで簡単にバージョンアップが可能だ。
複数root設定時のzhqコマンドとpecoコマンドの連携方法
まず、zsh
でいい感じのpeco
コマンドとの連携設定を知ることが出来たのがよかった。
最近仕事用と私用のディレクトリ(ghq root
)を分けてghq
コマンドを使おうと思っていたのだが、うまく設定できていなかった。
本書で無事解決することが出来た。
さっそく自分のdotfilesのghq
関連の設定を更新した。
function peco-src () {
local repo=$(ghq list | peco --query "$LBUFFER" --initial-filter=Fuzzy)
if [ -n "$repo" ]; then
repo=$(ghq list --full-path --exact $repo)
BUFFER="cd ${repo}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src
ghq look(ghq get –look)コマンドの誤った使い方
本を読むまで、「look
コマンドはシェルを改めて起動するから嫌な感じだなあ」と思っていたのだが、単にユースケースを間違えていただけだった(今までghq look
コマンドを使った間違ったディレクトリ移動方法を使っていただけだった)。なお、v1バージョンのghq
コマンドではghq look
コマンドは廃止されている。
v1ではghq get --look
コマンドのみになっているので、ghq look
コマンドを使った誤った移動をrc
ファイルに記載している人は動かなくなっているだろう。
その他でも、自分のリポジトリを取得するとき(会社のPCで取得するなど、意外と頻度がある)、ownername
(username)を省略できるのは知らなかった。
また、レシピ集としてワンライナーや他のツールと組合わせた例も提案されていた。これをヒントに自分でも応用した使い方を考えられそうだった。
今後どう活かすのか
ghq
コマンドを最新にして、zshrc
ファイルも整理したので、前よりもさらにソースコードリーディングや開発がラクになった。
2020年はもっとコーディングしていくぞ。
ちなみに、@songmuさんはご自分のブログでもよくghq
コマンドのtipsをまとめてられているので、そちらも読んでみるとよいだろう。
- ghqを使っていても(使っていなくても)goimportsを爆速にする | おそらくはそれさえも平凡な日々
- ghqで仕事用と趣味用でディレクトリ分けしてリポジトリ管理しやすくなりました | おそらくはそれさえも平凡な日々
- Go Modules時代に依存をghqで一括cloneする | おそらくはそれさえも平凡な日々
参考
- https://github.com/motemen/ghq
- https://leanpub.com/ghq-handbook
- https://github.com/Songmu/ghq-handbook
- ghqを使っていても(使っていなくても)goimportsを爆速にする | おそらくはそれさえも平凡な日々
- ghq v1リリースとghq-handbookのお知らせ | おそらくはそれさえも平凡な日々
- ghqで仕事用と趣味用でディレクトリ分けしてリポジトリ管理しやすくなりました | おそらくはそれさえも平凡な日々
- Go Modules時代に依存をghqで一括cloneする | おそらくはそれさえも平凡な日々