gitであれば
git log --grep なにか
でできる。SVNには何も用意されてゐない。
以下の関数を .bashrc に書く。
function svn-grep() { TMP_ID=$(uuid -v4) cat << RUBY > /tmp/$TMP_ID require 'nokogiri' log = Nokogiri::XML STDIN.read logentries = log.css('logentry').select{|logentry| logentry.css('msg').first.content.include?(ARGV[0]) } system "svn log -v #{logentries.collect{|logentry| '-r' + logentry['revision'] }.join(' ')}" RUBY svn log --xml | ruby /tmp/$TMP_ID $1 rm /tmp/$TMP_ID }
これは
svn-grep なにか
として使う。
SVNのlogをXML形式で吐く。検索し、revisionを指定してlogを吐きなおさせる。検索し、revisionを指定してlogを吐きなほさせる。
同じ仕組でRuby以外でも実装できる。