2011-07-26 23 views
7

我們是由3名開發人員組成的小團隊(Boss,我和另一位開發人員主要是遠程工作),我負責爲Mercurial HG設置存儲庫服務器。將Mercurial存儲庫放入共享網絡驅動器是一個好主意嗎?

看來我可以簡單地將我們的集中式存儲庫放在共享網絡驅動器上。這將非常容易設置,但似乎有任何一個人可能會濫用直接工作/修改源存儲庫的方便性。這就是爲什麼我在考慮使用HgWebdir服務器來控制對中央存儲庫的訪問。因此不鼓勵直接訪問中央源代碼庫,但共享驅動器將在這裏以防萬一。

我想這是一個定義我們的內部版本控制程序的問題,而不是一個真正的版本控制問題,但我仍然繼續提出問題。由於我不覺得自己有足夠的經驗可以做出決定,如果我不能100%確定我的理由和方法是有效的,那麼我可能很難執行版本控制系統應該被其他人使用的方式開發人員。

編輯:

我可以看到有共享文件夾版本控制軟件工作的潛在問題。但是任何人都會在推送到共享文件夾時仔細解釋場景背後發生的一切?我的理解是,共享驅動器本質上是一個共享鏈接/快捷方式,因此對於共享驅動器,本地計算機上的Mercurial僅鎖定該鏈接的鎖定,但事實是每個用戶計算機可能具有不同的Mercurial實例,鏈接'鎖,而服務器的Mercurial實例將在物理驅動器上保存自己的鏈接。我可以看到它很複雜,但它會如何失敗?我可以理解結論,但不能將事實與結論聯繫起來

+0

另一點需要考慮的是網絡驅動器通常具有奇怪的文件系統語義,這與SCM不能很好地協作。至少這種情況是因爲涉及網絡驅動器的腐敗(它可能不是固定的)。 – tonfa

+1

我在猜測,將代碼託管在場外,比如位於bitbucket或窯上的私人存儲庫是不可能的? –

+0

@Lasse不,現在不行。順便說一句,任何人都知道在Bitbucket中託管你的非開源源代碼是否可行?我知道這是推理的一種選擇,但除了說「爲什麼?」之外,我怎麼能說服我的老闆呢? –

回答

7

不應將Mercurial存儲庫放置在網絡服務器上的共享文件夾中,因爲Mercurial無法在此類設置的所有情況下可靠地保持鎖定,並在推送到中央存儲庫期間,鎖定對於避免破壞存儲庫至關重要。

事實上,我會刪除了「不鼓勵」,並以「不可能」代替,並只有服務存儲庫中的與hgweb或hg serve,前者是長時間運行的服務器推薦的設置。

+0

如何運行HGWEB並將存儲庫存儲位於網絡共享上? – Omar

2

如果你有一箇中央服務器,你可以在那裏安裝hgweb,並作爲一箇中央和BACKED-UP源來推送它。我們仍然擁有Windows 2003服務器(我無法改變這種情況),並且在網上搜索一下就能夠找到有關如何在Windows服務器上設置hgweb的信息,儘管它大部分涉及Windows Server 2007.

相關問題