什么是版本控制
記錄一個(gè)或若干文件內(nèi)容變化,便于將來(lái)查閱秘案。
版本控制系統(tǒng)
CVS
本地版本控制系統(tǒng)
復(fù)制整個(gè)項(xiàng)目,保存在不同文件夾中答姥。
優(yōu)點(diǎn):簡(jiǎn)單
缺點(diǎn):易犯錯(cuò)、易混淆铣缠、數(shù)據(jù)可能丟失
問(wèn)題:如何更好的進(jìn)行版本控制烘嘱?
解決:本地版本控制系統(tǒng)。
原理:大多采用簡(jiǎn)單的數(shù)據(jù)庫(kù)來(lái)記錄文件的歷次更新差異蝗蛙。
例如:RCS
RCS原理:在硬盤(pán)上保存補(bǔ)丁集(補(bǔ)丁式文件修訂前后的變化)蝇庭,通過(guò)補(bǔ)丁計(jì)算各個(gè)版本內(nèi)容
集中化的版本控制系統(tǒng)(簡(jiǎn)稱(chēng)CVCS)
問(wèn)題:如何讓不同系統(tǒng)上的開(kāi)發(fā)者協(xié)同工作?
解決:集中化版本控制系統(tǒng)捡硅。
原理:有一個(gè)單一集中管理的服務(wù)器哮内,保存所有文件的修訂版本。協(xié)同工作的人們通過(guò)客戶(hù)端連到這臺(tái)服務(wù)器壮韭,取出最新的文件或者提交更新北发。
例如:CVS、Subversion喷屋、Perforce
優(yōu)點(diǎn):
可以看到別人在項(xiàng)目中做了什么
方便管理員管理(開(kāi)發(fā)者權(quán)限琳拨、只管理一個(gè)CVSC不用每個(gè)客戶(hù)端都管理)
缺點(diǎn):
中央服務(wù)器故障,宕機(jī)的時(shí)候誰(shuí)都沒(méi)法提交更新屯曹。
中央數(shù)據(jù)庫(kù)磁盤(pán)損壞狱庇,又沒(méi)備份,所有數(shù)據(jù)都丟失了恶耽。
分布式版本控制系統(tǒng)(簡(jiǎn)稱(chēng)DVCS)
問(wèn)題:如何解決CVCS的缺點(diǎn)呢僵井?
解決:分布式版本控制系統(tǒng)。
原理:客戶(hù)端把代碼倉(cāng)庫(kù)完全鏡像下來(lái)驳棱。
例如:Git批什、Mercurial、Bazaar社搅、Darcs
優(yōu)點(diǎn):
任何一處服務(wù)器發(fā)生故障驻债,都可以用任何一個(gè)鏡像本地倉(cāng)庫(kù)恢復(fù)。
許多這類(lèi)系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫(kù)進(jìn)行交互形葬。籍此合呐,你就可以在同一個(gè)項(xiàng)目中,分別和不同工作小組的人相互協(xié)作笙以。 你可以根據(jù)需要設(shè)定不同的協(xié)作流程淌实,比如層次模型式的工作流,而這在以前的集中式系統(tǒng)中是無(wú)法實(shí)現(xiàn)的。