摘要:版本控制俱病,即記錄一個或若干文件內(nèi)容變化立叛,以便將來查閱特定版本修訂情況以及回溯的系統(tǒng)谓着。
集中式--svn
SVN, 全名Subvision; 作為集中式版本控制工具绪商,版本庫集中存放在中央服務(wù)器,team里每個人work時從中央服務(wù)器下載代碼耳璧,是必須聯(lián)網(wǎng)才能工作成箫。個人修改后然后提交到中央版本庫;對比最早的版本控制工具--cvs旨枯,svn解決了cvs的不穩(wěn)定性蹬昌,現(xiàn)在是開源社區(qū)的主流集中式版本控制工具.
Subversion的特點概括起來主要由以下幾條:
1.每個版本庫有唯一的URL(官方地址),每個用戶都從這個地址獲取代碼和數(shù)據(jù)攀隔;
2.獲取代碼的更新皂贩,也只能連接到這個唯一的版本庫,同步以取得最新數(shù)據(jù)昆汹;
3.提交必須有網(wǎng)絡(luò)連接(非本地版本庫)明刷;
4.提交需要授權(quán),如果沒有寫權(quán)限满粗,提交會失敱材;
5.提交并非每次都能夠成功映皆。如果有其他人先于你提交挤聘,會提示“改動基于過時的版本,先更新再提交”… 諸如此類捅彻;
6沖突解決是一個提交速度的競賽:手快者组去,先提交,平安無事步淹;手慢者添怔,后提交,可能沖突.(建議每次提交前update)
分布式--git
Git ,開源的分布式版本控制系統(tǒng)贤旷,是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。分布式相比于集中式的最大區(qū)別在于開發(fā)者可以提交到本地砾脑,每個開發(fā)者通過克掠资弧(git clone),在本地機(jī)器上拷貝一個完整的Git倉庫.
簡略的說韧衣,Git具有以下特點:
1.Git中每個克隆(clone)的版本庫都是平等的盅藻。你可以從任何一個版本庫的克隆來創(chuàng)建屬于你自己的版本庫购桑,同時你的版本庫也可以作為源提供給他人,只要你愿意氏淑。
2.Git的每一次提取操作勃蜘,實際上都是一次對代碼倉庫的完整備份。提交完全在本地完成假残,無須別人給你授權(quán)缭贡,你的版本庫你作主,并且提交總是會成功辉懒。
3.甚至基于舊版本的改動也可以成功提交阳惹,提交會基于舊的版本創(chuàng)建一個新的分支。
4.Git的提交不會被打斷眶俩,直到你的工作完全滿意了莹汤,PUSH給他人或者他人PULL你的版本庫,合并會發(fā)生在PULL和PUSH過程中颠印,不能自動解決的沖突會提示您手工完成纲岭。
5.沖突解決不再像是SVN一樣的提交競賽,而是在需要的時候才進(jìn)行合并和沖突解決线罕。
優(yōu)缺點對比(面試常見)
SVN優(yōu)點:
1止潮、 管理方便,邏輯明確闻坚,符合一般人思維習(xí)慣沽翔。
2、 易于管理窿凤,集中式服務(wù)器更能保證安全性仅偎。
3、 代碼一致性非常高雳殊。
4橘沥、 適合開發(fā)人數(shù)不多的項目開發(fā)。
缺點:
1夯秃、 服務(wù)器壓力太大座咆,數(shù)據(jù)庫容量暴增。
2仓洼、 如果不能連接到服務(wù)器上介陶,基本上不可以工作,看上面第二步色建,如果服務(wù)器不能連接上哺呜,就不能提交,還原箕戳,對比等等某残。
3国撵、 不適合開源開發(fā)(開發(fā)人數(shù)非常非常多)。但是一般集中式管理的有非常明確的權(quán)限管理機(jī)制(例如分支訪問限制)玻墅,可以實現(xiàn)分層管理介牙,從而很好的解決開發(fā)人數(shù)眾多的問題。
Git優(yōu)點:
1澳厢、適合分布式開發(fā)环础,強(qiáng)調(diào)個體。
2赏酥、公共服務(wù)器壓力和數(shù)據(jù)量都不會太大喳整。
3、速度快裸扶、靈活框都。
4、任意兩個開發(fā)者之間可以很容易的解決沖突呵晨。
5魏保、離線工作。
缺點:
1摸屠、學(xué)習(xí)周期相對而言比較長谓罗。
2、不符合常規(guī)思維季二。
3檩咱、代碼保密性差,一旦開發(fā)者把整個庫克隆下來就可以完全公開所有代碼和版本信息胯舷。
總結(jié):
工具沒有好壞刻蚯,只有適不適合;集中式在傳統(tǒng)的企業(yè)團(tuán)隊開發(fā)里優(yōu)勢明顯(推廣成本桑嘶,安全性)炊汹,而分布式面向開源項目,或者工作機(jī)制比較自由的團(tuán)隊逃顶,個人讨便。