post-commitでsvnリポジトリの更新内容をご機嫌にgmailに集める

http://f29.aaa.livedoor.jp/~yamakan/index.php?LinuxSettingMemo%2F%A5%C7%A5%A3%A5%B9%A5%C8%A5%EA%A5%D3%A5%E5%A1%BC%A5%B7%A5%E7%A5%F3%B6%A6%C4%CC%2FSVN%28Subversion%29%A5%B3%A5%DF%A5%C3%A5%C8%A5%E1%A1%BC%A5%EB%C0%DF%C4%EA
を参考にgmail
post-commitは

/opt/local/bin/ruby /svnrepos/svn2gmail.rb "$REPOS" "$REV" "あなたのメアド@gmail.com"

メール送信は自分でいつも使っている関数をコピペ
smptはgmailを使うと可用性が高まりそう。

#!/usr/bin/ruby
# -*- coding: utf-8 -*-

#gem install tmail tlsmail (1.8ねー)
require 'rubygems'
require 'tmail'
require "tlsmail"

def myMakeMail(to,sbj,body)
  # tmailでメールを作成
  mail = TMail::Mail.new
  mail.to = to
  mail.from = 'svncommitfook+amatzsvn@gmail.com'
  mail.subject = sbj
  mail.date = Time.now
  mail.mime_version = '1.0'
  mail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
#  mail.set_content_type 'text', 'plain', {'charset'=>'utf-8'}
  mail.body = body
  puts mail.to_s if $DEBUG # 作成されるメールを確認したい場合はこちら。
  return mail
end

def mySendMail(c,mail)
  # メールはNet::SMTPで送信。
  # gmailはTLSによる暗号化が必要なので、tlsmailを利用する。
  Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
  Net::SMTP.start( c[:server],  c[:port], c[:domain], c[:user], c[:pass],c[:auth]){ |smtp|
    smtp.sendmail(mail.encoded, mail.from, mail.to)
  }
end

gmailconfig = {
  :server => 'smtp.gmail.com',
  :port => 587,
  :domain => 'localhost.localdomain',
  :user => '送信者の@gmail.com',
  :pass => 'パス',
  :auth => 'plain'
}

############################################################
require 'kconv'

REPOS=ARGV[0]
REV=ARGV[1].to_i
toaddr = ARGV[2]

svnauthor=%x{svnlook author #{REPOS} -r #{REV} }.chomp
svndate=%x{svnlook date #{REPOS} -r #{REV} }.chomp
svnchanged=%x{svnlook changed #{REPOS} -r #{REV} }.chomp
svnlog=%x{svnlook log #{REPOS} -r #{REV} }.chomp
svndiff=%x{svnlook diff #{REPOS} -r #{REV} }.chomp

fromaddr=['ふろむなメールアドレス']

svnlog=svnlog.kconv(Kconv::UTF8,  Kconv::ASCII)

body = <<END_OF_BODY
 Subversion committed to #{REPOS} #{REV}
 Updated by #{svnauthor}
 Modified #{svndate}

 Log:
 --------------------------------------------------------
 #{svnlog}

 Changed:                    [U:UPDATE A:APPEND D:DELETE]
 --------------------------------------------------------
 #{svnchanged}

 Diff:
 --------------------------------------------------------
 #{svndiff}

END_OF_BODY

mail = myMakeMail(toaddr,"[SVN-#{REV}] Commit by #{svnauthor}", body.tojis)
mySendMail(gmailconfig,mail)

会社のsvnに仕込みたいが入れるの怖い。
深夜帯に会社にいる機会があれば仕込んでしまおう。
こういうのってメンテする気概だと。
メールさえ来てくれれば、こっちのタイミングで確認+不具合報告ができるぅ!!
隣の人が"cronでsvn up"開発の天才なのでメール地獄になる気もしますが。。。
sjisとutf8の混在環境でうまくdiffが表示されるのかはやってみんとわからんけれども。