SVN commit 後 e-Mail 通知設定

因為一直被 Firebox 的 ReminderFox Plugin 在 webdav 內的 ics 檔部份資料無故消失的問題困擾, 所以就將 webdav 內的 ics 檔納入 svn 控管, 每五分鐘自動 commit. 透過這樣的方式雖然可以在事後找到消失掉的資料, 但是必須在還有印象時才好找到..

所以如果當 svn commit 後可以馬上寄出差異性的 e-Mail 通知, 就可以比較快發現這些自動 commit 所異動的狀況, 如有問題也可以立即處理.

  • OS : CentOS release 5.2 (Final) x86_64
  • Subversion : subversion-1.4.2-2.el5
  • perl : perl-5.8.8-10.el5_2.3
  • svn 存放目錄 : /var/www/svn/
  • script 存放目錄 : /opt/trysrvtool/
  • 先採用 commit-email.pl ← 雖然 Subversion 開發團隊說這個已經廢棄了, 建議改用 mailer.py, 但我不會 python :-/
su - root
cd /opt/trysrvtool
wget http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/commit-email.pl.in
mv commit-email.pl.in commit-email.pl
chmod a+x *.pl
  • repos 是 servercfg 專案 → 目錄 /var/www/svn/servercfg/
  • 來源信箱為 sys@ichiayi.com
  • 通知信箱為 me@ichiayi.com
  • 主旨為 svn commit:
cd /var/www/svn/servercfg/
cd hooks
vi post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG="en_US.UTF-8";/opt/trysrvtool/commit-email.pl "$REPOS" "$REV" --from sys@ichiayi.com  -s "svn commit:" me@ichiayi.com
chmod a+x post-commit
  • 先在 repos 內找到一個 reversion 編號.. Exp.10302 ←移除 P4-2800/data/webdav/Cal/google 內所有檔案
./post-commit /var/www/svn/servercfg 10302
  • 就會在 me@ichiayi.com 信箱收到來自 sys@ichiayi.com 主旨為 svn commit: r10302 - P4-2800/data/webdav/Cal/google 的信件, 內容如下:
Author: jonathan
Date: 2008-07-03 03:59:26 +0800 (Thu, 03 Jul 2008)
New Revision: 10302

Removed:
   P4-2800/data/webdav/Cal/google/lunar_holiday.ics
   P4-2800/data/webdav/Cal/google/taiwan_holiday.ics
:
:
Log:
刪除掉所有 google 的 ics 檔

Deleted: P4-2800/data/webdav/Cal/google/lunar_holiday.ics
===================================================================
--- P4-2800/data/webdav/Cal/google/lunar_holiday.ics	2008-07-02 19:05:03 UTC (rev 10301)
+++ P4-2800/data/webdav/Cal/google/lunar_holiday.ics	2008-07-02 19:59:26 UTC (rev 10302)
@@ -1,6450 +0,0 @@
-BEGIN:VCALENDAR
-PRODID:-//Google Inc//Google Calendar 70.9054//EN
-VERSION:2.0
-CALSCALE:GREGORIAN
-METHOD:PUBLISH
-X-WR-CALNAME:農曆
:
:
  • tech/svnhookscript.txt
  • 上一次變更: 2008/07/03 04:24
  • jonathan