什么是分布式版本控制系統(tǒng)?
以下VCS(version control system)為版本控制工具:
分布式和中央式的區(qū)別 在于,分布式 VCS 除了中央倉(cāng)庫(kù)之外,還有本地倉(cāng)庫(kù):團(tuán)隊(duì)中每一個(gè)成員的機(jī)器上都有一份本地倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)里包含了所有的版本歷史,或者換句話(huà)說(shuō),每個(gè)人在自己的機(jī)器上就可以提交代碼、查看歷史,而無(wú)需聯(lián)網(wǎng)和中央倉(cāng)庫(kù)交互——當(dāng)然,取而代之的,你需要和本地倉(cāng)庫(kù)交互。
中央式的中央倉(cāng)庫(kù)有兩個(gè)主要功能 :保存版本歷史、同步團(tuán)隊(duì)代碼。而在分布式 中,保存版本歷史的工作轉(zhuǎn)交到了每個(gè)團(tuán)隊(duì)成員的本地倉(cāng)庫(kù)中,中央倉(cāng)庫(kù)就只剩下了同步團(tuán)隊(duì)代碼這一個(gè)主要任務(wù)。它的中央倉(cāng)庫(kù)依然也保存了歷史版本,但這份歷史版本更多的是作為團(tuán)隊(duì)間的同步中轉(zhuǎn)站。
分布式的優(yōu)點(diǎn):
大多數(shù)的操作可以在本地進(jìn)行,所以速度更快,而且由于無(wú)需聯(lián)網(wǎng),所以即使不在公司甚至沒(méi)有在聯(lián)網(wǎng),你也可以提交代碼、查看歷史,從而極大地減小了開(kāi)發(fā)者的網(wǎng)絡(luò)條件和物理位置的限制。
分布式的缺點(diǎn):
由于每一個(gè)機(jī)器都有完整的本地倉(cāng)庫(kù),所以初次獲取項(xiàng)目(git clone)的時(shí)候會(huì)比較耗時(shí);
由于每個(gè)機(jī)器都有完整的本地倉(cāng)庫(kù),所以本地占用的存儲(chǔ)比中央式要高。
對(duì)于一般的程序項(xiàng)目而言,由于項(xiàng)目的大多數(shù)內(nèi)容都是文本形式的代碼,所以工程的體積都并不是很大,再加上文本內(nèi)容自身的特點(diǎn),VCS 可以利用算法來(lái)把倉(cāng)庫(kù)的體積極大地壓縮。這就導(dǎo)致,在實(shí)際中,Git 等分布式 VCS 的倉(cāng)庫(kù)體積并不大,初次獲取項(xiàng)目的耗時(shí)和本地倉(cāng)庫(kù)的存儲(chǔ)占用都很小。所以對(duì)于大多數(shù)的程序項(xiàng)目而言,分布式 VCS 「尺寸大、初次下載慢」的問(wèn)題其實(shí)并不嚴(yán)重。