ghqとpecoでリポジトリの管理を便利にする
はじめに
この記事はフィヨルドブートキャンプ Part 1 Advent Calendar 2021の記事です。Part 2もあります。
概要
リポジトリをあちこちに置いていたのですが、ghqとpecoを使うことでリポジトリの管理がとても楽になったので紹介したいと思います。
- cloneするときにどこにcloneするかいちいち考えなくてよくなる
- 色んな場所に散らばったリポジトリを一括管理できるようになる
- リポジトリの一覧、移動が秒でできる
などがメリットとして挙げられます
Goのインストール
ghqとpecoはGo製ツールなのでまずインストールします
$ brew install go
パスを設定する(zshの場合)
# 下記を追記する
export GOPATH=$HOME
export PATH=$PATH:$GOPATH/bin
ターミナルを再起動、もしくは下記を実行する
$ source ~/.zshrc
ghqのインストール
$ brew install ghq
ghqで管理するrootディレクトリを設定(この記事では~/src
とする)
参考:x-motemen/ghq: Remote repository management made easy
$ git config --global ghq.root '~/src'
pecoのインストールとghqとの連携
pecoのインストール
$ brew install peco
ghqの管理化にあるリポジトリを一覧表示するキーバインドを設定する(この記事ではctrl
+ ]
とする)
# 下記を追記する
function peco-src () {
local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src
使い方
これで環境が整ったので使い方を説明します
ghqでcloneする
$ ghq get https://github.com/foo/bar.git
# もしくは
$ ghq get git@github.com:foo/bar.git
コマンド実行するだけで~/src/github.com/foo/bar
配下にgit cloneしてくれます
ghq管理化のリポジトリを一覧
先程登録したキーバインドを押下するとghq管理化のリポジトリを一覧表示してくれます
QUERY> IgnoreCase [2 (1/1)]
/Users/hoge/src/github.com/foo/bar
/Users/hoge/src/github.com/baz/fuga
↑
↓
キーもしくはctrl
+ n
ctrl
+ p
でカーソルを移動できるので任意のリポジトリ上でエンターを押下するとそのパスへcd
してくれます(文字列でも絞り込みもできます)
すでにローカルにあるリポジトリをghq管理化に移行する
ghqは新しくクローンをする場合はコマンド一発でできるのですが、すでにローカルにあるリポジトリはなかなか面倒くさそう。そこでいい感じに移行してくれるツールがあるのでそちらを使います
早速ghqでクローンします
$ ghq get git@github.com:astj/ghq-migrator.git
ディレクトリを移動しておきます
$ cd ~/src/github.com/astj/ghq-migrator
あとは環境変数 GHQ_MIGRATOR_ACTUALLY_RUN=1
を指定して移動したいディレクトリを引数に渡して実行するだけです
# ホームディレクトリに置いてある`hoge`の場合
$ GHQ_MIGRATOR_ACTUALLY_RUN=1 ./ghq-migrator.bash ~/hoge
これですでにローカルにあったリポジトリもghq管理下に移行できます。
さいごに
少し作業の作業で環境が整えられてめちゃくちゃ効率よくリポジトリ管理ができるようになるのでかなりオススメです!
自分も以前は何も考えずにホームディレクトリにcloneしていて、だんだん量が増えてきたのでなんとかしたいな〜と思っているときにタイミング良くこれらのツールの存在を知ったのでよかったです。
色んなリポジトリでホームディレクトリが散らかってる方は是非今年のうちに整理しておきましょう〜
参考:
ghqでリポジトリ管理とpeco連携で快適git生活 - Qiita
雑にgit cloneして管理していたリポジトリ群をghq管理下に移行してスッキリさせる - 平常運転
Discussion