c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Subversionのlogメッセージを検索する svn-grep

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以外でも実装できる。