🐀

ghqとpecoでgopath配下でレポジトリを一元管理

2021/10/31に公開

モチベーション

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製のエディタでコードジャンプも自在。
快適生活の始まり。

参考

https://qiita.com/strsk/items/9151cef7e68f0746820d

Discussion