幾款版本控制工具SVN、GIT、CVS及Mercurial的比較學(xué)習(xí)資料_第1頁
幾款版本控制工具SVN、GIT、CVS及Mercurial的比較學(xué)習(xí)資料_第2頁
幾款版本控制工具SVN、GIT、CVS及Mercurial的比較學(xué)習(xí)資料_第3頁
幾款版本控制工具SVN、GIT、CVS及Mercurial的比較學(xué)習(xí)資料_第4頁
幾款版本控制工具SVN、GIT、CVS及Mercurial的比較學(xué)習(xí)資料_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精品文檔版本管理RCS,cvs,svn,git比較1,RCS(RevisionControlSystem)修訂控制系統(tǒng)特點(diǎn):1),簡單2),使用Lock機(jī)制防止多個(gè)開發(fā)人員對同一個(gè)文件同時(shí)進(jìn)行修改.2,CVS(CocurrentVersionSystem)并發(fā)版本系統(tǒng)建立在RC睫石上,最流行的開放源代碼版本控制系統(tǒng)特點(diǎn):1),使用單一的主代碼樹,而不像RCS0B樣依賴多個(gè)目錄.2),最大優(yōu)點(diǎn)在于多名開發(fā)人員可以同時(shí)對一個(gè)文件進(jìn)行修改.允許合并.這就"并發(fā)"開發(fā).3,SVN(SubVersion)1) 目錄的版本控制CVS只能對文件進(jìn)行版本控制,不能對目錄進(jìn)行版本控制.CVS

2、只能注意到,一個(gè)文件在一個(gè)位置被刪除了,而在一個(gè)新位置創(chuàng)建了另外一個(gè)文件。由于它不會(huì)連接兩個(gè)操作,因此也很容易使文件歷史軌跡丟失2) SVN可以原子性提交CVS采用線性、串行的批量提交,即依次地,一個(gè)接一個(gè)地執(zhí)行提交,每成功提交一個(gè)文件,該文件的一個(gè)新的版本即被記錄到版本庫中,提交時(shí)用戶提供的日志信息被重復(fù)地存儲(chǔ)到每一個(gè)被修改的文件的版本歷史中。CVS串行批量提交模式的弊端在于當(dāng)任何原因造成批量操作的中斷時(shí)(典型原因包括:網(wǎng)絡(luò)中斷、客戶端死機(jī)等),版本庫往往處于一個(gè)不一致的狀態(tài):原本應(yīng)該全部入庫的文件只有一部分入庫,很有可能版本庫中的最新版本不能順利編譯,更為嚴(yán)重的是,隨著其他的用戶執(zhí)行cvs

3、update操作,該不一致性將迅速在開發(fā)團(tuán)隊(duì)中擴(kuò)散,從而嚴(yán)重影響團(tuán)隊(duì)的開發(fā)效率,并存在質(zhì)量隱患。另外,假如該批量提交的中斷沒有被及時(shí)發(fā)現(xiàn),開發(fā)團(tuán)隊(duì)往往要花更多的時(shí)間進(jìn)行軟件調(diào)試和排錯(cuò)。4,GitGit是用于Linux內(nèi)核開發(fā)的版本控制工具。與常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本庫的方式,不必服務(wù)器端軟件支持,使源代碼的發(fā)布和交流極其方便。Git的速度很快,這對于諸如Linuxkernel這樣的大項(xiàng)目來說自然很重要。Git最為出色的是它的合并跟蹤(mergetracing)能力。git更加適合分布式開發(fā)項(xiàng)目。而svn(當(dāng)然全稱是subversion)則更適合于

4、集中式大型開發(fā)項(xiàng)目。也有在git之上再使用一層svn的做法。表1CVS,Git,Mercurial,Subversion比較特征CVSGitMercurialSubversion是否原子提交CVS:沒有.CVS提交不是原子的Git:是的.提交都是原子的Mercurial:是的Subversion:提交都是原子的文件和目錄是否可以移動(dòng)或重命名CVS:不是.重命名不支才e.如果手動(dòng)進(jìn)行,可能會(huì)損壞歷史記錄Git:支持重命名,這是很實(shí)用的目的.git甚至能檢測到重命名之后文件的改變.盡管如此,基于特殊的存儲(chǔ)結(jié)構(gòu),重命名不會(huì)被顯示的記錄,git能夠推導(dǎo)出來(在實(shí)際使用中很容易做到)Mercurial:

5、是的,重命名是支持的Subversion:是的.支持重命名在移動(dòng)或重命名之后智能合并CVS:不能.重命名都不支持,就不必說智能了Git:不支持.細(xì)節(jié)在GitFAQ里:“Git有一個(gè)重命名的命令gitmv,但是這僅僅是為了便禾k效果和移掉某個(gè)文件,增加另外一個(gè)文件沒有任何區(qū)別”Mercurial:是的.重命名之后智能合并是支持的.Mercurtial文檔說:“如果我修改一個(gè)文件,而你重新命名了這個(gè)文件,然后我們合并我們的艾更,那么我所做的修改就會(huì)被更新到根據(jù)舊文件名字而產(chǎn)生的新文件里(這可能Subversion:不支持.svnhelpme"中提到"注意:這個(gè)子命令相當(dāng)于拷貝和

6、刪除.“并且可能有個(gè)bug就是你所期望的最簡單的動(dòng)作,但是不是所有版本控制系統(tǒng)都支持)文件和目錄拷貝CVS:不能.拷貝不支持Git:不能.拷貝/、支持Mercurtial:是的.支持拷貝Subversion:是的.并且拷貝非常容易(O(1).包括產(chǎn)生分支遠(yuǎn)程存儲(chǔ)倉庫的備份CVS:間接的.可以使用JohnPolstra寫的CVSupGit:是的.是git的內(nèi)部特征Mercurial:是的Subversion:間接的.可以使用Chia-liangKao的SVN:Mirror插件(好像是臺(tái)灣人)或ShlomiFish的SVN-Pusher工具是否傳遞變更到父倉庫CVS:不會(huì)Git:是的(Linux內(nèi)

7、核開發(fā)過程經(jīng)常使用這個(gè)特征)Mercurtial:是的Subversion:是的,使用要么是Chia-LingKao的SVN:Mirror腳本或者ShlomiFish的svn-push工具倉庫權(quán)限CVS:很有限.“pre-commithookscripts“能夠被用來實(shí)現(xiàn)各種權(quán)限控制系統(tǒng)Git:請看和Gitf附帶的contrib/hooks/update-paranoid.看和svnperms類似的path_rules的代碼Mercutial:是的.它能夠鎖住倉庫,子目錄或者使用hooks后的文件Subversion:是的.基于http權(quán)限的WebDAV-based模塊能夠支持基于目錄級的倉庫

8、義更集CVS:不是.變更是基于文件的Git:是的.是支持的,創(chuàng)建他們很容易Mercurial:是的.艾更集是支持的Subversion:部分支持.對于次提交會(huì)隱式創(chuàng)建一個(gè)變更集跟蹤線性的文CVS:是的.Git:是的.(gitblame)Mercurial:是的Subversion:是的(svnblame)件歷史cvsannotate(hgannotate)能夠只在倉庫的單目錄下作用CVS:是的Git:不是.盡管如此,提交多少能被限制,請看RepositoryPermissions”Mercurial:能夠基于某樹的某個(gè)子集進(jìn)行提交.也有局部檢出的能力Subversion:是的跟蹤未提交的變化C

9、VS:是的.通過cvsdiffGit:是的.另外,分支在git里非常智能,在某些工作流里能夠被當(dāng)成是另外一個(gè)未提交代碼的存儲(chǔ)庫.請看gitstash命令Mercurial:是的.使用hgdiffSubversion:是的.使用svndiff基于單個(gè)文件的提交信息CVS:不是.提交信息是基于單次變化的Git:是的.提交信息基于變更集Mercurial:不是Subversion:不是.沒有這個(gè)特征文檔CVS:非常棒.有很多在線的tutorials和資源,在線的書籍.命令行客戶端也支持一個(gè)在線的幫助系統(tǒng)Git:良好.短的幫助比較簡潔難,懂.man頁很有分量,但容易誤解.有很多tutorialMerc

10、urial:很好.后基于公司的書籍和wiki.每個(gè)命令都集成了幫助Subversion:很好.有一些在線的書籍和一些在線的tutorials和資源.并且書籍是以docbook/xml寫的所以很容易變換成其他格式.命令行同樣提供了在線的幫助系統(tǒng)配置是否輕松CVS:好.是個(gè)事實(shí)上的標(biāo)準(zhǔn).基于每個(gè)系統(tǒng)都有并且很容易配置Git:好.在現(xiàn)有平臺(tái)上二進(jìn)制可用.需要C編譯器和Perl.在windows上需要cygwin.開后一些Unix特征Mercurial:非常好.幾乎所有平臺(tái)都有二進(jìn)制包.從源碼編譯需要python2.3以上,并且需要C編譯器Subversion:Subversion服務(wù)命需要安裝在ap

11、ache2模塊里(如果有人希望HTTP作為底層協(xié)議的話)或使用它自身的服務(wù)器.客戶端需要Subversion特征的邏輯還啟WebDAV庫(針對HIIP).安裝組件很直接,但是需些額外的工作(假定subversion在某些平臺(tái)沒有一進(jìn)制包可用)命令集CVS:包含了3個(gè)經(jīng)常用到的命令的簡單的命令集(cvscommit,cvsupdate和cvscheckout)和其它一些Git:命令集很豐富,并且和CVS不兼容Mercurial:嘗試模仿CV皎互方式,但是偏離J基于不同的設(shè)計(jì)的意圖Subversion:類CVS的命令集,能夠很容易被CVS用戶使用網(wǎng)絡(luò)支持CVS:好.cvs在不同的場合使用不同的協(xié)議

12、.協(xié)議能夠通過ssh鏈接的加密隧道進(jìn)行Git:非常棒.能夠使用本地的git協(xié)議,但也能在rsync,ssh,HIIP和HIIPS上使用Mercurial:非常棒.使用HTTP或ssh.遠(yuǎn)程訪問會(huì)非常安全,在只讀網(wǎng)絡(luò)里不需要上鎖Subversion:4E常好.Subversion服務(wù)器支持WebDAV+DeltaV(基于HIIP或HTTPS昨?yàn)榈讓訁f(xié)議,或者它自身的協(xié)議同樣能在ssh鏈接通道里使用.可移植性CVS:好.客戶端能在UNIX,Windows和MacOS上使用.服務(wù)器端能在UNIX,附有UNIX模擬層的Windows上使用Git:客戶端運(yùn)行在大多數(shù)的UNIX系統(tǒng)上,但沒有MS-Wind

13、ows本地程序.基于cygwin的系統(tǒng)看起來也能使用Mercurial:非常棒.運(yùn)行在基于所有能運(yùn)行python的平臺(tái).倉庫是兼容性的基于CPU結(jié)構(gòu)和字節(jié)序的Subversion:非常好.客戶端和服務(wù)器端都能在UNIX,Windows和MacOSX上運(yùn)行web接口CVS:是的.CVSweb,ViewVC,Chora和wwCVSGit:是的.Gitweb包含在發(fā)布包中Mercurial:是的.Web接口是內(nèi)置組件Subversion:是的.ViewVC,SVN:Web,WebSVN,ViewSVN,mod_svn_view,Chora,Trac,SVN:RaWeb:Light,SVNBrowser,Insurrection和perl_svn.另夕卜,Subversion的apache服務(wù)也提供了一個(gè)基礎(chǔ)的web接口圖形用戶界面CVS:非常好.有很多圖形界面可以用:WinCVS,Cervisia(對于KDE),TortoiseCVS(Windows瀏覽器插件)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論