2008-09-26 79 views
10

我的Ubuntu服務器安裝了Apache和Subversion。我將此服務器用作登臺服務器,純粹用於測試目的。我使用Apache來託管Web應用程序,Subversion保留源代碼的版本化副本。如何使用提交後掛鉤將提交的文件從SVN複製到Web目錄?

我目前的工作流程:

  • 進行更改文件
  • 文件提交到Subversion版本庫
  • 在SFTP新上傳文件到Apache的公共目錄
  • 觀的變化我的網頁瀏覽器

如果我的工作流程如下所示,我會更加高興:

  • 進行更改文件
  • 提交文件到Subversion版本庫
  • 在後臺,顛覆提出的承諾文件的副本到Apache公共目錄
  • 觀的變化我的網頁瀏覽器

我有很少的服務器管理經驗,任何幫助或指針表示讚賞。我聽說post-commit鉤子是我需要的,而且我可以編寫bash腳本來做到這一點,但我不知道從哪裏開始,並且在Google搜索之後沒有找到任何東西。

謝謝!

回答

0

這是可以做到的,但自動推每次提交到生產網站並不總是一個好主意。有時候還有其他需要改進的地方,因爲新代碼存在而打破了網站,但數據庫模式尚未更新,這只是令人尷尬。

我傾向於做的是讓服務器結帳svn的副本,然後,一旦我準備好了所有必須發生的事情,我會對其進行svn更新。

但是,如果您真的想要,您可以將命令放在提交後觸發器中,它將自動爲您執行所有操作。這可能包括在服務器上運行遷移腳本(如果存在此更改的話),以處理任何需要發生的非代碼更改。

+0

我的應用程序在運行時會檢查數據庫模式,並在出現問題時正常顯示「現在不可用」頁面。更不用說這是一個登臺服務器,所以這是我想要出錯的地方;)。不過謝謝你的迴應。 – rmh 2008-09-26 19:24:54

0

我認爲真的,總體問題你應該問自己---你可能已經問過你當然---是這樣的:「在部署它之前我怎麼最容易地測試我的代碼?

我認爲一個很好的答案是在你的開發盒上安裝Apache,並以你自己的用戶的身份運行它,使用webroot和/或cgi路徑/home/richardhenry/src/mywebsite(或者你檢查你的代碼)。

這樣,你可以測試你的代碼,甚至不提交。因此,您不會因爲破損或無用的提交而亂丟垃圾箱。一般來說,保持獨立的事物獨立往往是一個好主意(TM)。

或者,使用rsync將Web服務器與工作目錄同步,或者編寫一個腳本,將文件從開發盒中推送到登臺服務器,並添加運行腳本的Makefile規則(或調用rsync )。如果你想成爲真的花哨,使用inotify或其他文件通知監視器來自動運行你的腳本。