zshでGitのリモートリポジトリのホスト名を表示する

2018-09-26  /  GitZsh

zsh ではvcs_infoを使用して作業中のリポジトリの情報を表示することができる。「zsh vcs_info」でググるといろいろと出てくるが、私は以下の記事をベースに設定を行って、少しずつアップデートしている。

zsh の vcs_info に独自の処理を追加して stash 数とか push していない件数とか何でも表示する(記事は 4 年ほど前のものだが、zsh 自体がそんなにアップデートしているわけでもないので、今でも十分通用する)

最近になってgithub.comgitlab.comのどちらも使用するようにしたので、リモートリポジトリを間違えないようにホスト名を表示できるように修正した。

リモートリポジトリのホスト名を取得する

git ls-remote --get-urlでリモートリポジトリの URL を取得できる。この URL は.git/configに記載されているものが表示されるようになっている。たぶんgit remote add origin REMOTE_REPOSITORYで設定したものと同じになるはず。リモートが複数設定されている場合にどうなるか未確認だが自分のユースケースではそれはあまりないので、気にせず使っている。

[email protected]:kawaken/dotfilesという構成になっている場合が多いので、:@で分割してホスト名に該当しそうな箇所を拾っている。

hostname=$(git ls-remote --get-url | cut -d: -f1 | cut -d@ -f2)

プロンプトに表示する

自分の場合はhook_com[branch]の中に混ぜ込むようにしている。
https://github.com/kawaken/dotfiles/blob/master/zsh/vcs_info#L54

-    echo "%f${arrow}%F{cyan}${remote}%f${(j:/:)gitstatus}"
+    echo "%f${arrow}%F{cyan}${remote}(${hostname})%f${(j:/:)gitstatus}"

最終的にはこんな感じで表示される。

20180926234632

出力結果が長い

ホスト名が出るのは良いが、ちょっと長いので短くしたい。ここで以前書いたホスト名を短くする手法を使う。SSH_CONFIG を使用して git のリポジトリ URL を短縮する

# gh = [email protected]
git remote rm origin
git remote add origin gh:kawaken/dotfiles
git branch -u origin/master

20180926234611

シンプルな表示になった。

Published: 2018-09-26  /  Tags: GitZsh  /  Share: X