SVN是Subversion的簡(jiǎn)稱两踏,是一個(gè)開放源代碼的版本控制系統(tǒng),相較于RCS丧荐、CVS缆瓣,它采用了分支管理系統(tǒng),它的設(shè)計(jì)目標(biāo)就是取代CVS虹统」耄互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion。
VSS 的全稱為 Visual Source Safe 车荔。作為 Microsoft Visual Studio 的一名成員渡冻,它主要任務(wù)就是負(fù)責(zé)項(xiàng)目文件的管理,幾乎可以適用任何軟件項(xiàng)目忧便。管理軟件開發(fā)中各個(gè)不同版本的源代碼和文檔族吻,占用空間小并且方便各個(gè)版本代碼和文檔的獲取,對(duì)開發(fā)小組中對(duì)源代碼的訪問進(jìn)行有效的協(xié)調(diào)。
VSS是基于悲觀鎖:“鎖定--編輯—解鎖”模式的珠增,這個(gè)模式有一個(gè)弊端超歌,就是當(dāng)其他人在編輯相關(guān)單元文件的時(shí)候,此單元文件處于鎖定狀態(tài)蒂教,其他人如果想編輯這個(gè)單元文件的話巍举,只能處于等待狀態(tài)。
后來凝垛,在持續(xù)集成中我使用的Subversion(SVN)替代VSS懊悯,Subversion是基于樂觀鎖:“修改—沖突—合并”的模式,也就是說多個(gè)人可以同時(shí)簽出一個(gè)單元文件梦皮,編輯然后提交炭分,如果多個(gè)人都修改了同一文件的某一行的話,就會(huì)發(fā)生沖突剑肯,手工解決沖突捧毛。
個(gè)人感覺:這種情況極少發(fā)生,更多的時(shí)候是:a編輯了File1文件的上半部分,b在File1文件的最后又添加了一些代碼呀忧,這樣是不會(huì)造成沖突的型将,而且本身這種多人編輯同一個(gè)文件的情況就很少。b不用因?yàn)閍在編輯File1文件而只能等待荐虐,他也能同時(shí)編輯File1文件七兜,直觀的好處就是這樣能提高開發(fā)速度。而且Subversion提供的配置文件非常容易掌握福扬⊥笾可以快速配置出對(duì)于整個(gè)開發(fā)團(tuán)隊(duì)成員負(fù)責(zé)模塊的讀寫權(quán)限配置,而且可以有組的概念[groups]铛碑,這就直接對(duì)應(yīng)了團(tuán)隊(duì)中以小組為劃分的結(jié)構(gòu)狠裹。
Subversion有很多擴(kuò)展工具可以選擇,大部分選擇的是TortoiseSVN汽烦,又名“小烏龜”涛菠,這是一個(gè)和Windows操作系統(tǒng)Shell綁定的工具,它把所有對(duì)Subversion的操作都包裝成了可視化操作撇吞,而且由于是和操作系統(tǒng)綁定的俗冻,任何一個(gè)目錄都可以成為存放代碼副本的地方,個(gè)人覺得非常好用牍颈,而且還有很多為Subversion編寫的鉤子腳本迄薄,可以讓我們?cè)诎姹究刂七@一塊做的更好。