有你所談論的三個地方:
- Subversion儲存庫本身。這是所有源代碼都可以使用的地方。該存儲庫可以通過Subversion客戶端訪問,該客戶端將與服務器進行通信。服務器可以使用SVN協議或HTTP/HTTPS。如果您想要使用HTTP/HTTPS,則需要安裝Apache服務器。如果要運行SVN,則需要運行
svnserve
進程。
- 開發者系統上的本地工作目錄。這是檢出文件的位置,以及開發人員可以進行更改的位置。它不一定在與存儲庫相同的機器上。
- PHP Webserver。這是PHP文件爲了工作和可能被測試而需要的地方。
讓我們這一次一個:無論使用哪種SVN或HTTP/HTTPS,它可以限制誰可以看到,結帳的代碼提交到存儲庫。在Subversion中,您可以將其指定到目錄級別。因此,一個開發者可以在代碼檢查http://myserver/svnrepos/module1
而另一個可以檢查進出代碼http://myserver/svnrepos/module2
,也不可以在http://myserver/svnrepos/core
看到你的代碼,
棘手的部分是得到這個信息到服務器進行測試。問題是如何讓開發人員不必將代碼放到服務器上就可以進行提交。有幾種方法可以做到這一點。
一種方法是建立一個服務器分支。如果開發人員想要PHP服務器上的代碼,他們會將代碼合併到服務器分支上。然後,您需要一種機制將代碼從存儲庫移動到PHP服務器。
我不會用一個post-commit鉤子用於這一目的。您不希望開發人員等待掛鉤將代碼複製到服務器。此外,你可能想要使服務器上下。
相反,使用crontab中,將看Subversion版本庫(尤其是服務器分支機構),然後當它檢測到變化,採取關閉服務器,更新服務器中的文件,然後使服務器恢復向上。我的方法是使用兩個不同的目錄。在服務器上有directory1。使用svn export
將文件導出到directory2。因此服務器仍然運行。然後,關閉服務器,然後將directory2
移動到directory1
,然後重新啓動服務器。這將停機時間降至最低,服務器處於或多或少穩定的狀態。
但是,您應該查看Jenkins以幫助您完成項目。詹金斯將允許你和你的開發者看到他們的變化(你可以限制誰看到什麼),做基本的測試。例如,您可以在提交後運行PHPMD(查看代碼是多麼混亂)和CPD(複製粘貼檢測器),並且Jenkins將顯示結果。然後,您可以在Jenkins上放置一個部署按鈕,開發人員可以將其構建部署到服務器。
詹金斯很容易設置和使用。對於各種缺陷跟蹤系統,Subversion和各種測試模塊,有大量plugins。不過,我不知道PHP有多少可用,但你可以看看。
基本上,您可以創建一個「提交後」腳本,將文件移動到htdocs文件夾。這種情況下的問題是,除非您正在測試服務器上工作,否則不適合生產。不過,這是實現你所問的最簡單的方法。 – LightBulb