TechCommit Advent Calendar 2019 12日目の記事です。

リポジトリきちんと管理してますか?

自分は今まで ~/project 配下に適当に突っ込んでやってきました。

Go を触り始めて、プロジェクト管理を Go っぽくやりたくなったのですが、さすがにあの構成は覚えきれない。 そんなとき ghq というツールを使うことで簡単に実現できそうだと分かったの導入してみました。

ghq は本来 Go とは関係なくリポジトリの管理ツールとして使えるのですが Go と共存させようと思うとちょっと考えなくちゃいけないことがあります。

何に気をつけたらいいかはこちらで丁寧に解説してくれているので説明は省きます。

いろんな人の設定をみると go getghq get を使い分けてるという人と ghq root$GOPATH/src に設定してすべて同じように管理している人、と2パターンに分かれている感じがしました。

自分は $GOPATH/src に Go と関係のないリポジトリが入ってくるのは微妙な感じがしたので使い分けることにしました。

Go の設定

Go については特段変わったことはしません。以下のよくある $GOPATH を設定するだけです。

1
2
export GOPATH=$HOME/.go
export PATH=$PATH:$GOPATH/bin

パッケージも通常通り go get で取ってくるようにします。

ghq のインストール

1
$ go get github.com/motemen/ghq

Mac だと brew install ghq でも大丈夫です。

ghq root の設定

ghq root は複数設定することができるので、以下のように設定します。

1
2
$ git config --global --add ghq.root $HOME/.ghq
$ git config --global --add ghq.root $GOPATH/src

そうすると ~/.gitconfig に以下が追記されているはずです。

1
2
3
[ghq]
       root = /Users/your-name/.ghq
       root = /Users/your-name/.go/src

これで ghq は ~/.ghq~/.go の両方が見えるようになります。 通常のリポジトリは ghq get で取ってきて Go のリポジトリは go get で取ってくるという使い分けをします。

ghq と fzf

ghq はフィルタリングツールと組み合わせることで真価を発揮します。 peco を設定している人が多いですが、自分は fzf と連携させています。 連携の詳細についてはこちらの記事を参照してください。