クローンしたローカルリポジトリがHOME配下のそこかしこへ自由奔放に点在している現状を整理すべくghqを導入する。
fzfを併用しリポジトリの一覧表示と絞り込み、また選択時に当該ディレクトリへ移動や、GitHubページの閲覧をできるようにする。
インストール
ghqをインストール。
brew install ghq
hubをインストール。
hubコマンドはでCUIからgithubページを開く為の限定的な用途で利用する。
brew install hub
fzfは「fzfによるCUI生活の改善」にて導入済み。
コンフィグレーション
ghq
ghqのルートディレクトリはデフォルトでは~/.ghq
となる。
カスタマイズする場合はgit config
コマンドでghq.root
オプションを定義する。
今回は~/Sources
をルートディレクトリとした。
git config --global ghq.root ~/Sources
またルートディレクトリは環境変数GHQ_ROOT
で指定することもできる。
環境変数とgit config
を併用した場合は環境変数側が優先される。
fish
XDG_CONFIG_HOME/fish/conf.d/ghq.fishを追加し
- fzfでローカルリポジトリのディレクトリへ移動するため関数
__ghq_cd_repository
- fzfでgithubページをブラウザで開くための関数
__ghq_browse_github
__ghq_browse_github
のエイリアスghb
を定義する。
function __ghq_cd_repository -d "Change local repository directory"
ghq list --full-path | fzf | read -l repo_path
cd $repo_path
end
function __ghq_browse_github -d "Browse remote repository on github"
ghq list | fzf | read -l repo_path
set -l repo_name (string split -m1 "/" $repo_path)[2]
hub browse $repo_name
end
alias ghb __ghq_browse_github
XDG_CONFIG_HOME/fish/functions/fish_user_key_bindings.fishを修正し、
- CTRL-G で
__ghq_cd_repository
関数の呼び出し
を定義する。
bind \cg '__ghq_cd_repository'
if bind -M insert >/dev/null ^/dev/null
bind -M insert \cg '__ghq_cd_repository'
end
利用する
リモートリポジトリをcloneする
ghq get
コマンドでリモートリポジトリをcloneする。
ghq get https://github.com/nijohando/blog
上記例の場合、cloneしたローカルリポジトリはghqルートディレクトリ配下に以下のように配置される。
github.com/nijohando/blog
ghq管理下のローカルリポジトリへ移動する
CTRL-G でfzfのファインダーが開きghq管理下のローカルリポジトリ一覧が表示される。
リポジトリを選択すると対象ディレクトリへ移動する。
githubページをブラウザで表示する
ghb
コマンドを実行するとfzfのファインダーが開きghq管理下のローカルリポジトリ一覧が表示される。
リポジトリを選択するとGitHubのリポジトリページへ移動する。