以下では、コミット時にユーザにメールを送信するための設定を記す。
以下のスクリプトをレポジトリの中にある hook というディレクトリに post-commitという名前でコピーして実行権限を与える。
#!/usr/bin/ruby
repogroup = 'hoge'
REPOS=ARGV[0]
REV=ARGV[1].to_i
svnlookbin="/usr/bin/env LANG=ja_JP.eucjp /usr/bin/svnlook"
svnauthor=%x{ #{svnlookbin} author #{REPOS} -r #{REV}}.chomp!
svndate=%x{ /usr/bin/env LANG=C /usr/bin/svnlook date #{REPOS} -r #{REV}}.chomp!
svnchanged=%x{ #{svnlookbin} changed #{REPOS} -r #{REV}}.chomp!
svnlog=%x{ #{svnlookbin} log #{REPOS} -r #{REV}}.chomp!
svndiff=%x{ #{svnlookbin} diff #{REPOS} -r #{REV}}.chomp!
toaddr = repogroup + "@gfd-dennou.org"
fromaddr = svnauthor + "@gfd-dennou.org"
require 'net/smtp'
require 'kconv'
Net::SMTP.start( 'localhost', 25 ) {|smtp|
  smtp.send_mail <<EndOfMail, fromaddr, *toaddr
From: #{fromaddr}
To: #{toaddr};
Subject: #{repogroup} commit
Date: #{svndate}
Content-Type: text/plain; charset = ISO-2022-JP
#{svndate.tojis}, user #{svnauthor} committed following file(s)
Modified Files:
#{svnchanged.tojis}
Log Message:
#{svnlog.tojis}
EndOfMail
}
repogroupの行の hoge をレポジトリを使用するグループ名に変更する。 個人的な使用の場合は自分の名前にする。これがメールの受け取りアドレスになる。
