Linux
Subversion 掛鉤不再執行
我不知道什麼時候開始發生這種情況,但是由於某種原因,我的 Subversion 鉤子都不再執行了。我在一台 Gentoo Linux 機器上執行 Subversion 1.6.9,它的鉤子過去一直工作。我正在通過 Apache2.2 的 svn_dav 模組執行 Subversion。
我修改了我用來寫入 apache:apache 擁有的 /tmp 目錄中的文件的鉤子腳本,但在送出之後,文件中沒有任何內容可以寫入。這些腳本是可執行的,並且歸 apache:apache 所有,所以我認為這不是問題。
這是我的一個未執行的測試腳本(post-commit.sh):
#!/bin/sh /bin/echo post-commit >> /tmp/z_test exit 0
執行送出後,我希望 pre-commit.sh 和 post-commit.sh 掛鉤都會執行,但它們似乎都沒有寫入所需的文件 (/tmp/z_test)。
這是怎麼回事?
出於某種原因,Subversion 似乎不再接受掛鉤腳本的任意擴展。我確實有名為“post-commit.sh”的鉤子,但 Subversion 似乎不再尋找這些。在將鉤子腳本重命名為“post-commit”後,Subversion 立即執行它。
我不確定 Subversion 的哪個版本改變了這種行為,並且在 1.6.11 的 CHANGES 文件中沒有提到它。
這裡有幾個基本的調試步驟來檢查:
- 仔細檢查執行 Apache 程序的使用者,確保它有權執行掛鉤腳本並寫入 /tmp 目錄:
ps -ef | grep httpd 2. 確保您可以在以 apache 使用者身份登錄時從命令行執行鉤子腳本 - 大多數時候我遇到 SVN 鉤子問題,這些腳本要麼沒有正確的執行權限,要麼包含的拼寫錯誤成為從命令行執行時很明顯。
如果這沒有幫助,這裡是調試鉤子腳本的一個很好的分步指南。