我建議在執行之前,您可以使用可以直接FTP的測試環境,然後推送活動,提交該版本的文件並允許此任務運行。
從tigris:
這樣做是所有的時間,並且很容易被添加post-commit鉤子腳本到存儲庫來實現的。閱讀本書第5章中的鉤子腳本。基本的想法是讓「活網站」只是一個普通的工作副本,然後讓你的提交後腳本腳本運行「svn update」。
實際上,有幾件事值得注意。執行提交(svnserve或apache)的服務器程序與將運行提交後腳本腳本的程序相同。這意味着該程序必須具有更新工作副本的適當權限。換句話說,工作副本必須由svnserve或apache運行的同一用戶擁有 - 或者至少工作副本必須設置適當的權限。
如果服務器需要更新它不擁有的工作副本(例如,用戶joe的〜/ public_html /區域),一種技術是創建+ s二進制程序來運行更新,因爲Unix贏得了'允許腳本運行+ s。編譯一個小C程序:
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
execl("/usr/local/bin/svn", "svn", "update", "/home/joe/public_html/",
(const char *) NULL);
return(EXIT_FAILURE);
}
...然後使用chmod + S中的二進制文件,並確保它是由用戶 '喬' 擁有。然後在提交後的掛鉤中,添加一行來運行二進制文件。
如果您在啓用掛接時遇到問題,請參閱「爲什麼我的存儲庫掛鉤不工作?」。
此外,您可能會想要防止apache導出實時工作副本中的.svn /目錄。將此添加到您的httpd。CONF:
# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</DirectoryMatch>
如果你這樣做,一定要拒絕訪問SVN元數據或者你可能會引入一個安全問題。更多信息:http://www.smashingmagazine.com/2009/09/25/svn-strikes-back-a-serious-vulnerability-found/ – 2009-12-17 15:43:52
這是真的。我並不總是需要處理這個問題,因爲我的大多數網站都是使用python,因此原始文件從不以它們可以提供的方式進行設置。 – 2009-12-17 15:46:44