2010-09-09 104 views
6

我試圖使移動到版本控制版本控制,因爲我的項目正變得越來越大。目前,我的發展是這樣的:實施爲web開發

  • 我已經「活」版本在線託管
  • 我有一個本地版本,以及本地網絡服務器
  • 我編輯的本地版本,並提供測試,上我的本地網絡服務器
  • 最後,我要跑Unison從我的本地版本更新真人版(以及更新我的本地版本與任何更改真人版)

我升ocal平臺是Gentoo,Linux。我對SVN有點了解,但我認爲它可能不適合我的需求,因爲我的本地Web服務器(和Unison)只能訪問當前簽出的代碼,等等。我可能是錯的,但我對此不太瞭解。

是否有人可以通過在現有代碼上設置某種版本控制來引導我,這會導致本地Web服務器可以訪問最新版本,並且不會爲未編輯的文件打開訪問時間? (我不希望每次齊奏我做出改變時上傳的每一個文件都)

回答

2

我用顛覆這一點,並且效果很好。

通常我開發了,直到我有東西清理的釋放。

在這一點上,我將創建一個名字類似釋放 - 分支。我將跳上生產系統並查看我新創建的分支。對於幾個項目,我將有一個在生產系統上運行的臨時區域。

舉例來說,我可能有一個看起來像這樣的目錄樹:

/web/sites/release-1 
/web/sites/release-2 
/web/sites/release-3 
/web/sites/release-4 
/web/sites/stage ==> release-4 
/web/sites/live ==> release-3 

「舞臺」和「住」是符號鏈接,並且是什麼阿帕奇擁有的DocumentRoot爲virtualhosts www.example.com和stage.example.com)

此設置允許我在實際生產環境中非常仔細地測試事物,然後通過交換符號鏈接進行切換。

通過在部署之前進行分支,我可以在極少數情況下對生產進行緊急修復。只要方便和適當,我就可以將這些更改合併回主幹。

最後一個建議:如果你使用Subversion項目的工作副本在生產環境中,你需要保持阿帕奇從讓人們瀏覽.svn目錄中的項目:

在httpd.conf

<Directory ~ "\.svn"> 
    Order allow,deny 
    Deny from all 
</Directory> 
+0

這似乎很方便!如果我沒有實際訪問實時版本,這會不方便嗎? – Mala 2010-09-10 21:47:05

+0

只要你有通過SSH訪問shell,根據我的經驗,這簡直太簡單了。 – timdev 2010-09-10 21:59:58

0

這是我當前的設置,我敢肯定,你可以做同樣的事情:

我使用SVN,這是對託管主服務器。有兩臺服務器,即開發和生產。我將所有工作都編輯在開發服務器的結賬上,然後當變更準備就緒後,我將其提交,然後更新生產服務器(即活動站點)上的結賬。

0

Mercurial風格:

> cd ~/code 
> hg init 
> hg add * 
> hg commit -m "Initial checkin" 

,將讓你工作Mercurial庫。閱讀鏈接瞭解如何使用它的更多信息。

您可以從您的本地Web服務器和實時Web服務器克隆讓事情保持最新狀態。

0

爲了擴大對@納通的答案。你想要做的:

cd ~/code # this is where your code lives now 
# set your local webserver to run from *this* directory 
hg init 
hg add * 
hg commit -m "Initial checkin" 
hg clone ~/code ~/staging 
cd ~/staging 
# set Unison to run from *this* directory 

在〜/ code中做你的開發,用你的本地服務器檢查它。隨時提交即可。當你得到一些有用的東西時,給它加上標籤。然後做:

cd ~/staging 
hg pull 
hg update your-tag-name 
# run unison. 

我得到的印象是,你也希望你的本地服務器從臨時區域運行,但是這似乎是一個糟糕的主意,因爲你想用它當您去檢查你的工作。如果你想要一種QA環境,你可以從分段運行第二臺Web服務器,但除了開發者之外,我只會這樣做。