我有一個SVN repo在我的服務器上設置,並有後提交問題。我在我的iMac上使用SmartSVN作爲我的客戶端。我通過SmartSVN的ssh + svn進行連接。我能夠成功連接到SVN並對其進行更改,但是在從我的SVN客戶端提交後,我的提交後腳本不起作用。SVN提交後掛鉤將不會運行後提交
我創建了我的post-commit shell腳本,名爲post-commit.sh
,並將它放在hooks目錄中,認爲這是您爲了使其工作而必須做的所有事情。基本上,腳本所做的是將SVN簽出到臨時工作區,然後將必要的文件上載到我的服務器上的開發子域。我這樣做是爲了讓我可以爲用戶爲我的Web應用程序所做的所有更改提供測試環境。該文件最初看起來很喜歡這個。
rm -rf /home/modionzc/tempworkspace/artistcondevspace/*
cd /home/modionzc/tempworkspace/artistcondevspace
svn checkout file:///home/modionzc/svnrepos/artistcondevrep
rm -rf /home/modionzc/public_html/devsuper/application/*
rm -rf /home/modionzc/public_html/devsuper/css/*
rm -rf /home/modionzc/public_html/devsuper/js/*
rm -rf /home/modionzc/public_html/devsuper/images/*
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/application/* /home/modionzc/public_html/devsuper/application/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/css/* /home/modionzc/public_html/devsuper/css/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/js/* /home/modionzc/public_html/devsuper/js/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/images/* /home/modionzc/public_html/devsuper/images/
cp /home/modionzc/artistconconfig/appconfigfiles/config.php /home/modionzc/public_html/devsuper/application/config/config.php
cp /home/modionzc/artistconconfig/appconfigfiles/database.php /home/modionzc/public_html/devsuper/application/config/database.php
cd /home/modionzc/public_html/devsuper
chmod -R 755 *
chmod 644 $(find *.* ! -type d)
當我從命令行手動運行並更新必要的文件時,它運行正常。現在由於某種原因,只要我從我的SmartSVN提交,它就不會被調用。通過存儲庫進行更改,如果我手動運行腳本,則可以看到實際進行的更新。我做了一些研究,發現它可能是許可問題,或者我沒有使用絕對路徑。我在整個腳本中使用絕對路徑。對文件的權限設置爲755.我能想到的唯一的事情是實際的SVN用戶沒有權限,這是在conf文件中創建的用戶。我已經瀏覽了SVN手冊並通過互聯網找到了一個沒有太多成功的解決方案。
一個建議是製作日誌文件以查看腳本被調用時引起的任何錯誤。所以現在我的post-commit腳本調用了具有上述命令的另一個文件,並輸出命令行返回到一個名爲svna.log
的文件。 post-commit.sh
文件現在看起來像這樣。
cd /home/modionzc/hooktest/
/home/modionzc/hooktest/ac_post_commit.sh &> svna.log
其中ac_post_commit.sh具有上面的原始代碼。 同樣,如果我手動調用它,所有的響應都會根據需要進入文件,但如果我從SmartSVN提交工作,則日誌文件實際上是空的。
僅供參考 - 由於某種原因,我的post-commit.sh在其末尾有一個*
,當我在鉤子目錄中找到文件時,它被列爲post-commit.sh *。
請任何幫助,這將不勝感激。
如果將'post-commit.sh'重命名爲'post-commit',會發生什麼? – Wrikken 2012-04-05 16:45:30
您在目錄列表中的'post-commit.sh'末尾看到一個'*',因爲'ls'命令可能與'ls -CF'類似。 '-F'選項告訴'ls'用'*'標記可執行文件,用'/'標記目錄等。 – 2012-04-06 00:49:28