🏄♂️
ghqでリポジトリ管理を簡単にする
どうもフロントエンドエンジニアのoreoです。
前回、ターミナルの改造に関する記事の中で、過去に使用したコマンド検索やディレクトリ移動などが簡単にできるpeco
について記載しました。
今回はghq
を導入しpeco
と組み合わせて簡単にリポジトリ管理ができるように改造します。
尚、この記事では、peco
はあらかじめ導入している前提です。導入してない場合は、前回の記事をご覧ください!
1 ghqのインストールと設定
ghpを使用すると、リポジトリの一元管理ができ、リポジトリ一覧の確認やリポジトリへの移動が簡単にできます。
1-1 ghqのインストール
ghqをインストールします
brew install ghq
ghqで管理するrootディレクトリを~/src
に設定します。
git config --global ghq.root '~/src'
1-2 pecoでコマンドを設定
pecoの設定ファイルを編集します。
vim ~/.zshrc
👇の内容を追記し、保存します。
## ghqとの連携。ghqの管理化にあるリポジトリを一覧表示する。ctrl - ]にバインド。
function peco-src () {
local selected_dir=$(ghq list -p | peco --prompt="repositories >" --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
.zshrc
を再度読み込みます。
source ~/.zshrc
この段階で、ctrl と ] でリポジトリの一覧確認とリポジトリへの移動ができます。
なお、私の.zshrc
におけるpeco
の設定は下記で過去のクエリー検索などもできます。
# peco settings
## 過去に実行したコマンドを選択。ctrl-rにバインド。
function peco-select-history() {
BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
zle -N peco-select-history
bindkey '^R' peco-select-history
## 過去に実行したディレクトリ移動を選択。ctrl-gにバインド。
if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
zstyle ':completion:*' recent-dirs-insert both
zstyle ':chpwd:*' recent-dirs-default true
zstyle ':chpwd:*' recent-dirs-max 1000
zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/chpwd-recent-dirs"
fi
function peco-cdr () {
local selected_dir="$(cdr -l | sed 's/^[0-9]\+ \+//' | peco --prompt="cdr >" --query "$LBUFFER")"
if [ -n "$selected_dir" ]; then
BUFFER="cd `echo $selected_dir | awk '{print$2}'`"
CURSOR=$#BUFFER
zle reset-prompt
fi
}
zle -N peco-cdr
bindkey '^G' peco-cdr
## ghqとの連携。ghqの管理化にあるリポジトリを一覧表示する。ctrl - ]にバインド。
function peco-src () {
local selected_dir=$(ghq list -p | peco --prompt="repositories >" --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
1-3 ghqで新たなリポジトリをクローンする
以下のコマンドで、~/src
配下にリポジトリがcloneされ、ghq管理にすることができます。
#HTTPSの場合
ghq get https://github.com/hoge/hoge.git
#SSHの場合
ghq get git@github.com:hoge/hoge.git
1-4 既存のリポジトリをghq管理に組み込む
既存のリポジトリをghq管理にするために、👇のghq-migrator
を利用します。
ghq-migrator
をクローンします。
ghq get git@github.com:astj/ghq-migrator.git
ghq-migrator
に移動します。
cd ~/src/github.com/astj/ghq-migrator
ghq管理に組み込みたいリポジトリへのホームディレクトリからのパスを👇の./(YOUR_REPOSITORY)/
に記載して実行するとghq管理に組み込むことができます。
# ホームディレクトリに置いてある`hoge`の場合
GHQ_MIGRATOR_ACTUALLY_RUN=1 ./ghq-migrator.bash ./(YOUR_REPOSITORY)/
2 最後に
今までパラパラとリポジトリを管理していましたが、これで一元管理ができるようになりました。非常に便利ですね!尚、この記事は下記「3 参考」の記事を大いに参考にさせていただきました。ありがとうございます。
Discussion