良くあるやつですが、某人の策略によりスクリプトを消されてしまったので再作成しました。
hooks/post-commit
#!/bin/sh export LANG=ja_JP.UTF-8 REPOS="$1" REV="$2" TO="svn@tanamon.jp" PREFIX="testrepos" ruby -Ku $REPOS/hooks/post-commit.rb $REPOS $REV $TO $PREFIX
TOとPREFIXはテキトウに書き換えてください。
hooks/post-commit.rb
require 'net/smtp' # args REPOS = ARGV[0] REV = ARGV[1] TO = ARGV[2] PREFIX = ARGV[3] # svn info author = `svnlook author -r #{REV} #{REPOS}`.chomp comment = `svnlook log -r #{REV} #{REPOS}`.chomp list = `svnlook changed -r #{REV} #{REPOS}`.chomp diff = `svnlook diff -r #{REV} #{REPOS}`.chomp.gsub(/\t/m, " ") dir = `svnlook dirs-changed -r #{REV} #{REPOS}`.split("\n")[0].chomp %r{^((.*branch/)*(.*?))(/|$)} =~ dir package = $1 # mail info SERVER = "mail.tanamon.jp" FROM = "#{author}@tanamon.jp" contents = <<EOS From: #{FROM} To: #{TO} Subject: [#{PREFIX} ##{REV}]#{package} Content-Type: text/plain; charset="UTF-8" :Comment #{comment} :Changed #{list} :Diff #{diff} EOS # mail post Net::SMTP.start(SERVER) do |smtp| smtp.sendmail(contents, FROM, TO) end
こちらもSERVERとFROMは書き換えてください。
送信されるメール
[testrepos #16220]test
:Comment コミットメールのテスト :Changed U test/dummy.txt :Diff 変更: test/dummy.txt =================================================================== --- test/dummy.txt 2009-02-10 10:22:29 UTC (rev 16220) +++ test/dummy.txt 2009-02-10 11:27:15 UTC (rev 16221) @@ -1,2 +1,3 @@ R~bgeXg Q +R
要点
- 件名にリポジトリ名称・リビジョン・更新プロジェクト名を入れている
- trunkが無い(直下に置いてる)ので、プロジェクト名取得ではbranchだけを判定している
- Subversionのauthorはメールアカウント名と同一なので、FROMをコミット者にしている
- ソースにタブを使う会社なので、4スペースに置き換えている