zshでsvnのブランチ情報を表示する
会社ではsvnを使って開発しているのですが、現在開発中のブランチ情報をいちいちsvn info
と打つのがめんどいなぁと常々思ってました。
最近うっかりタグにコミットしてしまったことがあったので、一念発起して、zshでsvnの情報を表示させる方法がないかググってみたのですが、なかなか思ったような情報が見つからず。。
会社のSVNリポジトリが変則的なヤツがあったりするので、svn info
で表示されるところのRelative URLの値を表示させたかったのですが、そういう機能はなさ気でした。
結局困ったときにはマニュアルを読めということなので、読んでみました。 http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information
あとは、githubを↓
https://github.com/search?q=zstyle++vcs_info%3Asvn&type=Code&ref=searchresults
で検索して、参考にしながら結局↓で実現できました(.zshrcに追記する。)
# display svn branch info zstyle ':vcs_info:*' enable git svn zstyle ':vcs_info:svn*' formats ' %F{magenta}%s%f %b' zstyle ':vcs_info:svn*' branchformat '%b:r%r' zstyle ':vcs_info:svn+set-branch-format:*' hooks svn-hook +vi-svn-hook() { hook_com[branch]=`svn info | perl -ne 's/^Relative URL: // && print'` }
ちなみに置換している箇所をsedにしなかったのは苦手なのと、MacのsedがBSD版でlinuxとオプションが違って嫌な感じだったからです。
なんとかやりたいことは実現できましたが、基本的にzshはgitには優しいけど、svnには厳しい、そんな印象を受けました・・・