經驗總結:SVN與CVS的區別大全
本節講解SVN與CVS的區別,主要包括是否更好的沖突標識與處理,是否有更多的本地/離線操作以及元數據管理問題。
更好的沖突標識與處理
通過是否進行更好的沖突標識與處理看SVN與CVS的區別:CVS和Subversion都支持通過分支與合并進行并行開發,并可以自動檢測到合并時的沖突(conflicts),并在合并結果中以<<<<<<…>>>>>>標識合并的沖突部分。在CVS中,經常會出現由于用戶的疏忽(如,沒有注意到沖突,或沒有完全處理好沖突)而將仍然帶有<<<<<<…>>>>>>沖突標識符號的文件直接進行提交(commit),從而在版本庫中產生垃圾版本。Subversion有效解決了CVS的以上問題:Subversion記錄并保持文件的沖突狀態,只有當用戶明確執行svnresolved命令后,該沖突狀態標識才被復位,該文件才能被提交,從而大大減少了將仍然帶有<<<<<<…>>>>>>沖突標識符號的文件直接進行提交的可能性。
更多的本地/離線操作
通過是否有更多的本地/離線操作看SVN與CVS的區別:眾所周知,CVS客戶端的工作拷貝中包含了一個隱含目錄CVS,該目錄中記錄了客戶端需要的一些管理信息;與此類似,Subversion的客戶端工作拷貝中也包含了一個隱含目錄.svn,該目錄中同樣記錄了客戶端需要的一些管理信息,如版本庫URL,當前訪問版本號等。與CVS不同的是,Subversion的.svn目錄中還包含了工作拷貝中每一個文件的一個“只讀的、干凈的”副本。正是由于該副本的存在,使得Subversion與CVS相比,可以執行更多的本地/離線操作,即某些操作不需要訪問版本庫服務器,因此不需要存在從客戶端到服務器的網絡鏈接,當然也不消耗任何網絡帶寬,這進一步增強了Subversion對廣域網的友好支持。
Subversion的以下命令可以進行離線操作:
svnstatus-顯示工作拷貝上的本地修改概況;
svndiff-顯示工作拷貝上的本地修改細節,比較修改前后的內容;
svnrevert-撤銷工作拷貝上的本地修改;
元數據管理
通過元數據管理看SVN與CVS的區別:與CVS相比,Subversion增加了元數據(metadata)管理機制。即可以對版本庫中的文件或目錄附加任意的“屬性”(property),并記錄屬性的變化歷史,也就是對元數據進行版本管理。一個Subversion屬性是一個“屬性名稱/屬性值”的二元組,如“BugNumber=100”就是一個屬性,可以將該屬性附加到版本N上,以說明版本N改正了編號為100的BUG。
Subversion元數據的目的是提供附件的信息以滿足流程或過程自動化的需要,以增強Subversion的管理能力和自動化程度。Subversion自身就通過“屬性”來存儲一些特殊的信息。一個使用Subversion元數據的例子:可以在一些批處理的腳本程序或Subversion的鉤子程序(hooks)中創建、訪問、修改“屬性”元數據來滿足流程自動化的要求。
【編輯推薦】
- MyEclipse6.0集成SVN及配置詳解
- CentOS系統中安裝subversion并使用svn+ssh訪問
- 基于Java的svn客戶端工具JavaSVN 1.1.0.beta發布
- 如何結合使用Subversion和Eclipse
- Subversion日期解析函數緩沖區溢出漏洞