...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

Subversion: コミットメール(1)

前略.

libopenssl-rubyがなかったので入れた.けどまだ動かない.なんででしょうかね・・・.

post-commitフックが失敗しました (終了コード: 1)。出力:
/var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:787:in `check_response': 504 5.7.4 Unrecognized Authentication Type 33sm88141887wad.18 (Net::SMTPSyntaxError)
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:695:in `auth_cram_md5'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:793:in `critical'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:694:in `auth_cram_md5'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:673:in `__send__'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:673:in `authenticate'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:488:in `do_start'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:440:in `start'
	from /var/lib/gems/1.8/gems/tlsmail-0.0.1/lib/net/smtp.rb:378:in `start'
	from /var/svnrepos/svn/bubble/hooks/commit-email.rb:53
$ cat commit-email.rb
#!/usr/bin/ruby -Ke
require 'rubygems'
require 'net/smtp'
require 'kconv'
require 'tlsmail'

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

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

toaddr  =['ふが']
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


message = <<END_OF_MESSAGE
From: Subversion Admin <#{fromaddr}>
To: Subversion Committers: #{toaddr}, ;
Subject: [SVN-#{REV}] Commit by #{svnauthor}
MIME-Version: 1.0
Content-Type: text/plain; charset = ISO-2022-JP
X-Mailer: /var/lib/svn/hooks/post-commit

#{body.tojis}
END_OF_MESSAGE

Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
Net::SMTP.start("smtp.gmail.com", 587, "localhost.localdomain", "メールアドレス", "パスワード") { |smtp|
    smtp.sendmail(message, fromaddr, *toaddr)
}

できました

Net::SMTP.start("smtp.gmail.com", 587, "localhost.localdomain", "メールアドレス", "パスワード", "plain") { |smtp|

最後の", plain"が抜けていました.
また後でちゃんとまとめたいと思います.