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が表示されるのかはやってみんとわからんけれども。