問題
目前我們公司是用 Subversion 做為版本控管系統,在 commit 時都會需要把版本更新訊息寄送給相關人員,當然這就會用到 post-commit 這個 hook 指令;而在 post-commit 中,我們可以利用 bash 語法去呼叫寄信程式。
不過預設建立好的 Repository 下的 hooks 目錄並沒有這個檔案,我們可以把預設的 post-commit.tmpl 複製成 post-commit :
1
| |
至於寄信程式的部份,在 Subversion 的 Source code 裡就提供了一個很有用的 mailer.py ,它可以協助我們寄送 commit 後的訊息。
原來的 post-commit 內容如下:
1 2 3 4 5 6 7 | |
將它修改為:
1 2 3 4 5 6 7 | |
不過用原始的 mailer.py 有個缺點,主要是它寄送的訊息主旨範例如下:
1
| |
這樣在多個專案時,我們就不容易識別這次的更新是哪個專案。
所以我就想透過修改 mailer.py ,讓它產生如下的主旨:
1
| |
修改方式
改法很簡單,有兩個地方要改: (針對 Subversion 版本 1.4.4 原始檔)
1 2 3 4 | |
改成:
1 2 3 4 | |
也就是這裡我多加了一個 repos.project_name ,讓信件主旨可以多一個專案名稱。不過 projects_name 並不是 repos 的屬性,所以我們還要再修改一個地方。
往下找到:
1
| |
然後在底下加入一行:
1
| |
其中 10 這個數字是指 /path-to-svn-repository/ 的長度,因為 repos_dir 的內容會是 /path-to-svn-repository/project-name ,而字串是由 0 開始算起,那麼 project_name 的起始位置就會剛好是 /path-to-svn-repository/ 的長度。 (所以請自行計算並更改之)
至於為什麼我會知道 repos_dir 的內容,這是因為我在一開始就用了以下的程式去印出它:
1 2 3 | |
當然這邊要注意縮排。
結論
Python 對我來說,其實是一個不熟悉的語言。不過它的語法也不是那麼難以理解,以我這種三流能力,竟然還能看懂並修改它。
而 mailer.py 也大量使用了物件導向的寫法,所以未來有機會在開發 Python 程式時,在物件導向的基礎也是不可或缺的。
就這樣啦~謝謝收看~再會~