背景
我正在嘗試為 Subversion 實現一些提交掛鉤。我做了很多研究來嘗試讓一個簡單的測試鉤子工作,但是我沒有運氣。
作為參考,我瀏覽、遵循並嘗試組合以下連結中的方法:
1。Subversion 目錄設定手冊
2.Tortoisevn 伺服器端鉤子腳本手冊
3.關於伺服器端掛鉤的說明,其中包含 Subversion 手冊的鏈接
4.預提交掛鉤的字對齊教程
5.針對提交掛鉤問題的伺服器故障答案
我還參考和使用了許多其他網站,但我仍然無法讓提交掛鉤工作。
我的環境
我的機器運行的是 RHEL6 (Cent OS)。
該顛覆位於遠端電腦上,未經主管許可,我無法直接存取該電腦。
遠端電腦正在運行 Subversion 1.6。
這是我的存儲庫的當前結構:
test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk
文件預提交暫時將其權限設定為777.所有目錄的權限都設定為775.
這是我創建的用於測試提交掛鉤的範例腳本:
#!/usr/bin/env bash
echo "THOU SHALL NOT PASS" 1>&2
exit 1
我已盡我所能檢查和測試,以確保我的預提交掛鉤正常工作。我不知道還需要檢查什麼才能確保它有效。我可以提交任何我喜歡的內容,並且螢幕上不會輸出任何訊息。
問題
1. 在實現 hooks 的過程中,有什麼我遺漏或忽略的地方嗎?
2.如果我以這種方式實現一個鉤子,我是否需要擔心在Tortoisesvn中再次實現相同的鉤子?
非常感謝任何反饋和/或建議。
答案1
- 在實現 hooks 過程中我是否遺漏或忽略了什麼?
不要使用權限 777。某些工具可能無法使用此類可疑權限。在你的情況下,這不太可能是問題,因為它適用於我的這種設定。但就是不要這樣做。將其更改為 755。
另一個要做的健全性檢查是直接在伺服器上執行鉤子腳本:
/path/to/test-for-svn-hooks/hooks/pre-commit
當您的腳本具有更有意義的內容時,您也應該使用適當的參數進行測試,例如:
/path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN
接下來,使用伺服器本身的結帳來測試它,例如:
svn co /path/to/test-for-svn-hooks /tmp/test1
cd /tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'
根據您在帖子中所寫的內容,這些步驟應該有效。我不知道您的測試失敗的條件的詳細資訊。如果你能做到這一點,那麼也許你就會明白測試失敗的原因。
- 如果我以這種方式實作一個鉤子,我是否需要擔心在 Tortoisesvn 中再次實現相同的鉤子?
不。無需在客戶端執行任何操作。所有用戶端都將遵守您在預提交掛鉤中定義的規則。


