顯示頁面舊版反向連結Fold/unfold all回到頁頂 本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。 ====== SVN commit 後 e-Mail 通知設定 ====== <quote> 因為一直被 Firebox 的 ReminderFox Plugin 在 webdav 內的 ics 檔部份資料無故消失的問題困擾, 所以就將 webdav 內的 ics 檔[[tech:svnmngconfig|納入 svn 控管]], 每五分鐘自動 commit. 透過這樣的方式雖然可以在事後找到消失掉的資料, 但是必須在還有印象時才好找到.. 所以如果當 svn commit 後可以馬上寄出差異性的 e-Mail 通知, 就可以比較快發現這些自動 commit 所異動的狀況, 如有問題也可以立即處理. </quote> ===== - 環境說明 ===== * 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/ * 先採用 [[http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/commit-email.pl.in|commit-email.pl]] <- 雖然 Subversion 開發團隊說這個已經廢棄了, 建議改用 mailer.py, 但我不會 python :-/ ===== - 安裝與設定 ===== ==== - 下載 commit-email.pl ==== <code> 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 </code> * 這個 [[http://svn.ichiayi.com/opensvn/opentrysoft/trysrvtool/commit-email.pl|commit-email.pl]] 有兩個地方要修改 - 第01行: #!/usr/bin/env perl -> #!/usr/bin/env perl - 第64行: my $svnlook = "@SVN_BINDIR@/svnlook"; -> my $svnlook = "/usr/bin/svnlook"; * [[http://svn.ichiayi.com/opensvn/opentrysoft/trysrvtool/commit-email.pl|可點這裡直接下載修改過的 commit-email.pl]] ==== - 設定 svn repos hook ==== * repos 是 servercfg 專案 -> 目錄 /var/www/svn/servercfg/ * 來源信箱為 sys@ichiayi.com * 通知信箱為 me@ichiayi.com * 主旨為 svn commit: <code> cd /var/www/svn/servercfg/ cd hooks vi post-commit </code> <file> #!/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 </file> <code> chmod a+x post-commit </code> ===== - 驗證與測試 ===== * 先在 repos 內找到一個 reversion 編號.. Exp.10302 <-移除 P4-2800/data/webdav/Cal/google 內所有檔案 <code> ./post-commit /var/www/svn/servercfg 10302 </code> * 就會在 **me@ichiayi.com** 信箱收到來自 **sys@ichiayi.com** 主旨為 **svn commit: r10302 - P4-2800/data/webdav/Cal/google** 的信件, 內容如下: <file> 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:農曆 : : </file> <note> * Log: 要能出現中文, 必須在 post-commit 內執行 commit-email.pl 前加上 <code bash>export LANG="en_US.UTF-8"</code> * 感謝 [[http://blog.gslin.org/archives/2008/05/13/1500/| Gea-Suan Lin’s BLOG - Subversion UTF-8 commit log]] 找出這中文解決方案. </note> ===== 參考資料 ===== * [[http://subversion.tigris.org/tools_contrib.html|Subversion Tools and Contrib]] * [[http://wiki.wsmoak.net/cgi-bin/wiki.pl?Subversion/EmailNotification|Subversion/EmailNotification]] * [[http://blog.gslin.org/archives/2008/05/13/1500/|Subversion UTF-8 commit log]] {{tag>svn subversion commit hook}} tech/svnhookscript.txt 上一次變更: 2008/07/02 20:24由 jonathan