なっく日報

技術やら生活やらのメモ

zshでsvnのブランチ情報を表示する

会社ではsvnを使って開発しているのですが、現在開発中のブランチ情報をいちいちsvn infoと打つのがめんどいなぁと常々思ってました。

最近うっかりタグにコミットしてしまったことがあったので、一念発起して、zshsvnの情報を表示させる方法がないかググってみたのですが、なかなか思ったような情報が見つからず。。

会社の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にしなかったのは苦手なのと、MacsedBSD版でlinuxとオプションが違って嫌な感じだったからです。

なんとかやりたいことは実現できましたが、基本的にzshはgitには優しいけど、svnには厳しい、そんな印象を受けました・・・