これまであんまり意識せずに適当なディレクトリにバカスカcloneをかけていたわけですよ。 複数のリポジトリ触ることがあんまりなく、ほぼ1つのリポジトリだけで完結する日々。まあモノリシックなRailsをメインの仕事にしている私にはそれで十分だったわけです。
話は変わって、今年に入ってから本格的に副業始めました。知り合いからちょっとしたチケットをもらってお小遣いを稼ぐ、という活動はやってましたがお仕事として本格的にコードを書く日々に突入したわけです。
現場はmicroservice的な複数リポジトリでサービスを管理している会社で言語はGolang。必然的にGolang的なディレクトリ管理が必要になってきます。となると、これまでの無秩序カオスな管理方法だとストレスマッハなのです。あれ?あれどこいったっけ?あれ?
最初は、普段使っているPecoのブランチ一覧選択よろしく、GOPATH以下を適当に抽出して選択する方法を取ろうとShellを書いていたわけなんですが。やはり先人の知識、すでに同じようなことを解決している方が当然いらっしゃるわけですな(`・ω・´)
ghq。そういえば昔この記事見て試そうとしていた記憶が呼び起こされます(´・ω・`)なんでやらなかったんだっけ?まあいいか。
早速これをセッティングしていきます。Golangのスクリプトですが、homebrewにもあるらしいのでこっちで入れます。
brew install ghq cat <<EOS >> "$HOME/.gitconfig" [ghq] root = ~/src EOS
合わせて環境変数GOPATH=$HOME
を設定しておきます。これやっておくとghqでGolangのものもghq list
されるようになります。強い。
ただ、これだけだとghq list
した結果をgrepするなりの作業が必要になってしまうので、peco等のインクリメンタルサーチツールで挟んであげます。
ghq list --full-path | peco --prompt "[find repository]" --layout=bottom-up
個人的にpecoには--prompt付けたい派です(`・ω・´) 上のコマンドにエイリアス貼るなりzleでキーバインド設定したい等あればお好みでどうぞ
ようやくこれでまともなリポジトリ管理ができるようになれそうです。