🐀
ghqとpecoでgopath配下でレポジトリを一元管理
モチベーション
goのバージョンによってはgopathに依存しなくできるとはいえバージョンを気にせず全てをgopath配下で開発したい。
かつ、ghqとpecoを使って個人開発/仕事を問わずレポジトリを一元管理して曖昧検索でさっとレポジトリ間を移動しつつすぐにコードリーディング、開発ができる状態にしたい。
手順
インストール
macでの手順。goを入れる。
brew install go
ghqとpecoを入れる。
brew install ghq
brew install peco
パスの設定
gopathの場所を確認。
go env | grep -i gopath
# -> ~/go/src
ghqのrootをgopathに設定する。
git config --global ghq.root '~/go/src'
すると、~/.gitconfig
に以下の記述が追加される。
[ghq]
root = ~/go/src
使っているシェルの設定ファイルに以下を追記。
~/.zshrc
export GO111MODULE=on
export GOPATH=$(go env GOPATH)
export PATH=$PATH:~/bin # この辺はgo envの設定による
export PATH=$PATH:$GOPATH/bin
コマンド準備
ctrl+]
でghq list
の標準出力をpeco
にパイプで渡し曖昧検索で選択するとcd
で移動してくれるコマンドを追記。
~/.zshrc
bindkey '^]' peco-src
function peco-src(){
local src=$(ghq list --full-path|peco --query "$LBUFFER")
if [ -n "$src" ]; then
BUFFER="cd $src"
zle accept-line
fi
zle -R -c
}
zle -N peco-src
レポジトリ作成
ghq create hoge
または、ghqは.git
フォルダの存否を見てghq list
コマンドの出力に出すかを決めているため
pwd # -> /Users/{username}/go/src/github.com/{username}
mkdir fuga
cd fuga
git init
でgitレポジトリを作ってもよい。
所感
ghqで瞬時に移動できるし、jetbrains製のエディタでコードジャンプも自在。
快適生活の始まり。
参考
Discussion