以下では、コミット時にユーザにメールを送信するための設定を記す。
以下のスクリプトをレポジトリの中にある 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 をレポジトリを使用するグループ名に変更する。 個人的な使用の場合は自分の名前にする。これがメールの受け取りアドレスになる。