2009-08-28 29 views
6

多年來,我們一直在使用CVS(與TortoiseCVS接口)來源控制和範圍廣泛的文檔控制(包括Word,Excel,Framemaker,測試數據,仿真結果等二進制文件)。與典型的版本控制系統不同,99%的時間我們想要阻止併發編輯 - 當用戶開始編輯文件時,文件的預編輯版本變成只讀給其他人。什麼版本控制系統最適合*防止*併發編輯?

很多使用這個功能的人不是程序員,甚至不懂計算機,所以我們也在尋找一種系統,讓人們只需將文檔添加到存儲庫,檢出並編輯文檔(除非有人其他人當前正在編輯它),然後用最少的大驚小怪重新檢查它。

我們已經很好地使用了CVS + TortoiseCVS,但是我們現在正在考慮Subversion和Mercurial(如果它們更合適,可以向其他人開放),以便更好地跟蹤版本,所以我想知道哪一個最透明地支持鎖定文件。例如,我們希望將獨佔鎖定作爲默認設置啓用,並且我們希望儘可能讓別人無意中開始編輯其他人已簽出的文件。例如,當某人檢出一個文件進行編輯時,即使他們最近沒有更新他們的沙箱,它也會首先與主數據庫進行檢查。也許它甚至不會讓用戶檢查一個文件,如果它離開了網絡,並且不能與母親簽入。

+0

維基百科作爲一個比較產品的優秀文章:[http://en.wikipedia.org/wiki/Comparison_of_revision_control_software](http://en.wikipedia.org/wiki/Comparison_of_revision_control_software) –

回答

10

Subversion提供強制鎖定。當設置Propoerty svn:needs-lock時,該文件將以只讀方式簽出,並且用戶需要將其鎖定才能獲得可寫的工作副本。沒有其他用戶可以從那裏鎖定相同的文件。

+0

但是,你仍然必須執行所有文件都具有svn:needs-lock屬性;不僅僅是現有的,還有新增加的。 svn autoprops可以做到這一點,但你必須確保每個客戶端都有正確的自動飛機配置。如果你只使用tortoiseSVN,tsvn:autoprops是另一種選擇,但如果用戶檢出項目的子文件夾,它將不起作用:-( –

+0

這可以在每個客戶端的配置文件中完成(miscellany:enable-auto- props = yes,auto-props:* = svn:needs-lock)通過服務器上的預提交鉤子檢查客戶端設置拒絕非鎖定簽入 –

5

我知道它不在您的列表中,但我們對Perforce感到滿意。 您可以防止多個簽有

你的Perforce管理員可以使用 P4的類型映射命令,以確保特定類型的那 所有文件(例如 ,//depot/.../*.gif爲所有 .gif文件)一次只能由一個 用戶打開。有關詳細信息,請參閱Perforce 命令參考。

+0

與P4相比,Subversion對此功能的實現「極度缺乏」 。在我列舉的一個公司選擇P4而不是SVN的原因列表中,我認爲SVN的位置很低,我希望在不久的將來會有顯着的改進:o –

+0

當p4對我這樣做時,我只是「 chmod u + w file「,這就是*那個問題的結尾,p4是有史以來設計的最差的版本控制工具 – jrockway

+0

可以阻止用戶使用」協調離線工作「 –

4

聽起來像SubversionTortoiseSVN將適合該法案。正如Arne Burmeister所提到的那樣,您可以將其默認爲需要鎖定模式,在此模式下每個簽出的文件都將是隻讀的,直到您鎖定它爲止。通過使用鉤子,您可以讓文件鎖定或解鎖時通知其他用戶。

TortoiseSVN與Windows資源管理器集成在一起,因此需要很少的計算機技能。

請注意,Subversion具有「竊取鎖定」功能,但如果您希望通過使用PreLock掛鉤,則可以禁用此功能。

+0

只要團隊成員是合理的做有效的通信nication),不需要禁用「竊取鎖定」功能。 –

+0

這個問題指出,「我們想盡可能讓別人無意中開始編輯其他人已經簽出的文件」 – RedFilter

1

我知道IBM ClearCase可以防止這種情況發生。我們在公司使用它是出於這個原因。

+0

儘管不是爲了防止併發編輯! – pablo

2

您提到Mercurial,儘管是Mercurial開發者,但我必須同意使用Subversion的建議。 Mercurial就是讓人們以分散的方式發展。這包括進行私人提交,以後只與他人共享。換句話說 - Mercurial不會嘗試鎖定中央服務器上的文件(甚至沒有中央服務器的概念)。

與Subversion一起使用,這是一個很好的集中式版本控制系統,你會發現(我只嘗試過開源系統,我不知道什麼是閉源系統)。如果你願意,你仍然可以嘗試hgsubversion「在一邊」。

0

原來的RCS。檢出文件時,將其鎖定:「co -l filename」。之後,直到你檢查它(「ci文件名」),沒有人可以改變文件。

0

我不認爲任何分佈式版本控制,如汞或git,將在這裏爲你工作。 SVN只具有最基本的鎖定功能 - 並且該文件是隻讀的,與某些辦公工具類似,意味着您可以對其進行編輯,然後發現在檢出之前無法保存它,然後檢查它只能發現服務器版本不同,並且您要麼丟失服務器版本,要麼丟失本地版本。

我不敢相信我是這麼說的,但如果你想以這種方式工作,那麼視覺安全是我所知道的唯一設計的系統。如果你想要一個更現代/可靠的版本,可以看看Sourcegear的Vault - 儘管他們付出了很大的努力來製作一些看起來像vss的東西,但在類似svn的環境中運行良好。

但也許一個專門的文檔管理解決方案會更好 - 或者甚至像門戶服務器。

相關問題