什么是版本控制
記錄一個(gè)或若干文件內(nèi)容變化,便于將來查閱。
版本控制系統(tǒng)
CVS
本地版本控制系統(tǒng)
復(fù)制整個(gè)項(xiàng)目,保存在不同文件夾中。
優(yōu)點(diǎn):簡(jiǎn)單
缺點(diǎn):易犯錯(cuò)、易混淆、數(shù)據(jù)可能丟失
問題:如何更好的進(jìn)行版本控制?
解決:本地版本控制系統(tǒng)。
原理:大多采用簡(jiǎn)單的數(shù)據(jù)庫(kù)來記錄文件的歷次更新差異。

1.png
例如:RCS
RCS原理:在硬盤上保存補(bǔ)丁集(補(bǔ)丁式文件修訂前后的變化),通過補(bǔ)丁計(jì)算各個(gè)版本內(nèi)容
集中化的版本控制系統(tǒng)(簡(jiǎn)稱CVCS)
問題:如何讓不同系統(tǒng)上的開發(fā)者協(xié)同工作?
解決:集中化版本控制系統(tǒng)。
原理:有一個(gè)單一集中管理的服務(wù)器,保存所有文件的修訂版本。協(xié)同工作的人們通過客戶端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新。

2.png
例如:CVS、Subversion、Perforce
優(yōu)點(diǎn):
可以看到別人在項(xiàng)目中做了什么
方便管理員管理(開發(fā)者權(quán)限、只管理一個(gè)CVSC不用每個(gè)客戶端都管理)
缺點(diǎn):
中央服務(wù)器故障,宕機(jī)的時(shí)候誰都沒法提交更新。
中央數(shù)據(jù)庫(kù)磁盤損壞,又沒備份,所有數(shù)據(jù)都丟失了。
分布式版本控制系統(tǒng)(簡(jiǎn)稱DVCS)
問題:如何解決CVCS的缺點(diǎn)呢?
解決:分布式版本控制系統(tǒng)。
原理:客戶端把代碼倉(cāng)庫(kù)完全鏡像下來。

3.png
例如:Git、Mercurial、Bazaar、Darcs
優(yōu)點(diǎn):
任何一處服務(wù)器發(fā)生故障,都可以用任何一個(gè)鏡像本地倉(cāng)庫(kù)恢復(fù)。
許多這類系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫(kù)進(jìn)行交互。籍此,你就可以在同一個(gè)項(xiàng)目中,分別和不同工作小組的人相互協(xié)作。 你可以根據(jù)需要設(shè)定不同的協(xié)作流程,比如層次模型式的工作流,而這在以前的集中式系統(tǒng)中是無法實(shí)現(xiàn)的。