2010-04-06 45 views
0

我開始在我的web服務器上使用Mercurial(在這種情況下是MediaTemple的網格)。我以前使用SVN,但我不是版本控制系統的專家。我只是需要一點幫助,以清理一些混淆因素,讓它達到最佳狀態。我在設置我的網絡服務器上的Mercurial時遇到了一些困惑

我有一個「數據」文件夾,它位於Web服務器根目錄之外,並且瀏覽器無法訪問。我之前建議我在這裏設置我的Mercurial存儲庫,然後在我的計算機上從本地克隆。我還會有一個基本上是Web服務器根目錄的'域'文件夾,裏面有我的實際域,我的網站實際上被提供給瀏覽器 - 這些也需要從'數據'存儲庫中更新。

但是考慮到這一點,設置後,它似乎效率低下......我克隆到我的本地(這是有道理的),增加,承諾,推動。沒關係......但後來我在數據存儲庫文件夾中更新,然後在我的域文件夾中更新以實際更新我的網站。

當然,我實際上並不需要這個'數據'文件夾的存儲庫?我的實際活動「域」文件夾本身不是主要的存儲庫嗎?所以我在本地克隆並從這些更新?請幫助我澄清一些混淆(如果可以的話)。

回答

0

這完全是個人喜好的問題。有些人把他們的網站也作爲「主」回購,有些人把它作爲其他地方回購的克隆。你正在做的是從回購目錄中爲你的網站提供服務,這是一個不錯的選擇。

一些考慮,你是否可能需要獨立於Web根克隆單獨的「數據」克隆是:

  • 你想在同一分支多頭可能混淆更新主的人回購?
  • 你想要一個你不信任的人來編輯實時網站嗎?可以推送一個受信任的管理員(你?)從數據推送/拉到webroot?

有一點需要注意的是,在「數據」回購可以做hg update -r null其擺脫的工作副本(但保留回購!),所以所使用的磁盤空間幾乎爲零(假設它是一個克隆的webroot他們將在FS硬鏈接級別共享相同的基礎文件)。

+0

所以你說這種方式很好......本地回購,'數據'回購和實時域回購。我想,就像你說的,如果其他人正在處理這些代碼,他們都可以推送到'數據'回購站,並且無法訪問主要的現場網站......這將留給我。這就說得通了。關於擺脫工作副本的說法很有意思,所以我的'數據'回購可以只是回購,根本就沒有文件 - 那就是你說的? – littlejim84 2010-04-06 15:33:59

0

我確實在網站根目錄之外有一個倉庫(數據)文件夾,包含各種倉庫,並通過hgwebdir在單獨的域(hg.mywebsite.com)上提供。

但是,我的網站存儲庫存儲在主域的httpdocs目錄中。我測試了我的本地環境,然後將更改推送到服務器也將發佈它們。在倉庫的hgrc

private/mywebsite = ../../../httpdocs 

這:

要做到這一點我在hgweb.config有這個

[hooks] 
changegroup.update = hg update 

這個鉤子將更新工作目錄時改變了尖端推。當然,我也爲Apache配置添加了一條規則來忽略.hg目錄,並在子域hg上運行,這是一條要求授權訪問私有/路徑的規則。

另一種方法是將存儲庫與其他存儲庫一起託管,然後將'hg archive'存放到httpdocs目錄中。更安全一點,慢一點,爲了方便,我會說它是50-50。

p.s.如果可能推送-f的人可以訪問您的存儲庫,那麼也添加一個鉤子來禁止創建遠程分支可能是一個好主意。

相關問題