2006-11-09
■[設定メモ]サブバージョン コミットメールの配信方法

* /var/subversion/svn/hooks/post-commit スクリプトを作成し、(コミット直後にSubversionにより実行される)
* post-commit スクリプトから/usr/lib/subversion/hook-scripts/commit-email.rb を呼ぶ
* スクリプトには実行権限を付けておく
post-commitを書き換える
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=japanese
/usr/lib/subversion/hook-scripts/commit-email.rb "$REPOS" "$REV"
cd /var/www/htdocs
umask 002
svn update `svnlook dirs-changed $REPOS | sed -e 's,htdocs/,,'` &
commit-email.rbは下記のように記述する
#!/usr/bin/ruby -Ke require 'net/smtp' require 'kconv' 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 =['info1@hoge.co.jp', 'info2@hoge.co.jp', 'info3@hoge.co.jp', 'info4@hoge.co.jp'] fromaddr=['Subversion@localhost.localdomain'] svnlog=svnlog.kconv(Kconv::EUC, Kconv::ASCII) body = <<END_OF_BODY Subversion committed to #{REPOS} #{REV} ┌────────────────────────────┐ │更新者 : #{svnauthor.ljust(46)}│ │更新日時: #{svndate.ljust(46)}│ └────────────────────────────┘ Log: -------------------------------------------------------- #{svnlog} Changed: [U:修正,A:追加,D:削除] -------------------------------------------------------- #{svnchanged} Diff: -------------------------------------------------------- #{svndiff} END_OF_BODY message = <<END_OF_MESSAGE From: Subversion Admin <#{fromaddr}> To: Subversion committers:; Subject: [コミットメール svn-#{REV}] commit MIME-Version: 1.0 Content-Type: text/plain; charset = ISO-2022-JP X-Mailer: Subversion email-send.rb #{body.tojis} END_OF_MESSAGE Net::SMTP.start('localhost', 25) { |smtp| smtp.send_mail(message, fromaddr, *toaddr) }
実行権限とか
# chmod 755 commit-email.rb
# chown www-data.www-data commit-email.rb
※ /usr/lib/subversion/hook-scripts/commit-email.pl を用いる方法で日本語文字化けが解決できなかったのでrubyスクリプトを用いた方法で代替しました。キッーーー!!
※ 参照:http://f29.aaa.livedoor.jp/~yamakan/index.php?SVN(Subversion)%20%A5%B3%A5%DF%A5%C3%A5%C8%A5%E1%A1%BC%A5%EB%C0%DF%C4%EA
で簡単にインストできました。
