云風(fēng)blog--版本控制系統(tǒng)再考察
Posted on 2011-04-13 11:04 幻海藍(lán)夢(mèng) 閱讀(208) 評(píng)論(0) 編輯 收藏 所屬分類: 版本管理 、配置管理鑒于遷移版本控制系統(tǒng)的工作量比較大(主要是培訓(xùn)成本),這幾天我們工作室重新調(diào)整了下各自對(duì) svn 倉(cāng)庫(kù)的管理權(quán)限,理了下以后的開(kāi)發(fā)管理流程。最終決定繼續(xù)把 svn 用下去(至少到項(xiàng)目第一階段完成),希望比以前用的更好。
但出于個(gè)人興趣,我繼續(xù)考察了幾個(gè)分布式 VCS/SCM ,并裝了其中幾個(gè)玩。個(gè)人直覺(jué) Darcs 最好。不過(guò)從流行度講,或許 Mercurial 更佳。
雖然近期網(wǎng)上似乎支持 Mercurial 的最多(包括烏龜版也做的最全面),但我還是找到一篇文章支持我的直覺(jué)。
Whose Distributed VCS Is The Most Distributed?
他寫(xiě)的算是有理有據(jù)了。
不過(guò)這篇 blog 成文于 2006 年 8 月,離現(xiàn)在已有些年頭,在這個(gè)訊息萬(wàn)變的今天,每個(gè)活躍的開(kāi)源軟件都會(huì)不斷的發(fā)展,大家姑且看之。至于我的個(gè)人意見(jiàn),只是出于直覺(jué),沒(méi)什么可參考性。
作者提出了理想的分布式版本控制系統(tǒng)的八點(diǎn)要求,這也正是我想要的:
-
協(xié)作的基本模式必須是基于分支。
-
做分支必須很廉價(jià)。
-
可以智能的合并分支。
-
每組更改集都不必通過(guò)整個(gè)更新歷史就能和其他部分合并。
-
分支既是倉(cāng)庫(kù)的副本,分支操作保持有全部的歷史。
-
合并操作也不損失更新歷史。
-
提交、分支、合并操作都可以離線完成。
-
針對(duì)大多數(shù)應(yīng)用都盡可能的快。
關(guān)于這 8 點(diǎn)的具體解釋,有興趣的朋友可以去讀原文,寫(xiě)的很清楚。其實(shí)對(duì)于我,沒(méi)必要分這么細(xì)。我需要的就是,大家可以基于分支來(lái)協(xié)作工作,而不是基于單次提交。我 每次向大家工作的集合(主干)做合并操作,應(yīng)該包含一系列的本地提交。在完成這個(gè)功能的基礎(chǔ)上,VCS 應(yīng)該用起來(lái)足夠簡(jiǎn)單(簡(jiǎn)單的用 pull/push 取代 update/commit),不損失我的工作流程包含的信息(從何時(shí)分支,何時(shí)合并,中間做了一系列什么修改),且跑起來(lái)足夠快。
作者的結(jié)論是明顯偏向 Darcs 的,這個(gè)觀點(diǎn)倒是可以商榷。不過(guò) svn 顯然達(dá)不到大多數(shù)要求。這幾天我在 svn 上做了許多分支合并的試驗(yàn),發(fā)現(xiàn) svn 很不人性(相比更人性的分布式設(shè)計(jì)而言)。為什么會(huì)這樣?因?yàn)?svn 設(shè)計(jì)之初本就不是基于分支來(lái)解決大家的協(xié)作問(wèn)題的。
btw, Darcs 對(duì)中文支持可能會(huì)有問(wèn)題,但是可以通過(guò)設(shè)置環(huán)境變量繞開(kāi)。請(qǐng)參考 Darcs 的手冊(cè)中 Character escaping and non-ASCII character encodings 一節(jié)設(shè)置。
原文:http://blog.codingnow.com/2008/01/version_control_system.html