專家精辟講解SVN與CVS的區別
本節主要介紹SVN與CVS的區別,上節已經介紹了一部分,不夠完整,本節繼續介紹SVN與CVS的區別,希望本文能教會你更多東西。
雙向的差異化-壓縮網絡傳輸
通過雙向的差異化-壓縮網絡傳輸看SVN與CVS的區別:CVS對二進制文件不能進行有效的差異化處理。對于文本文件,CVS僅僅支持單向的差異化傳輸:從CVS服務器到客戶端的傳輸是差異化的,即執行cvsupdate時,只有差異的部分從服務器傳輸到客戶端;而當執行cvscommit時,無論代碼變化多少,CVS都需要從客戶端向服務器完整傳輸被修改文件的全部內容,不能只傳輸差異。相反,無論是文本文件還是二進制文件,Subversion都進行雙向的差異化傳輸,并且差異化內容還要進行壓縮/解壓縮的過程:在服務器端獲取差異顯而易見,與CVS類似;Subversion在客戶端獲取差異的秘密在于—Subversion在客戶端的工作拷貝中隱含了每個文件的一個“只讀的、干凈的”副本(該副本隱藏在隱含目錄.svn里,通常不可見,該副本還有更多的妙用,參見“十二、更多的本地/離線操作”),通過比較用戶在客戶端的修改和該隱含的副本,Subversion獲取需要真正傳送到服務器的差異,并對差異進行壓縮后才進行網絡傳輸。
對CVS而言,操作的成本(網絡帶寬消耗是最大的操作成本)與被修改的文件的大小成比例,而與修改本身的大小無關;對Subversion而言,操作成本只與修改本身的大小成比例,而與被修改的文件的大小無關。因此,與CVS相比,Subversion消耗更少的網絡帶寬(以客戶端的存儲空間換取更少的帶寬消耗在目前的計算環境下應該是個相當不錯的選擇!)。Subversion更加適合基于互聯網(或廣域網)進行協作開發的地理上分布的團隊—版本服務器集中、單一;客戶端廣泛分布。
高效、快捷創建分支和基線
通過高效、快捷創建分支和基線看SVN與CVS的區別:CVS和Subversion都支持分支(branch)和基線(tag),通過分支與合并,可以有效支持大項目的并行開發模式;通過基線管理,可以準確標識一組文件的版本,有效進行軟件發布管理和必要時的歷史回溯。但CVS和Subversion在實現分支和基線的方式上存在很大的不同。CVS在創建分支的時候,需要對所有進行分支的文件進行依次的操作,因此分支的建立成本(主要是建立分支所需的時間,或消耗的計算資源)與參與分支的文件數量成比例,項目越大,版本庫越大,文件越多,分支的建立成本越高;基線(tag)的建立與此類似。
Subversion的分支和基線是通過執行“拷貝”來建立的:回想一下在沒有引入版本管理工具的時候我們是如何進行所謂的“分支”和“基線”管理的?答案顯然是“拷貝”—我們通過“拷貝”或“備份”來建立基線;同樣,為支持多個開發人員可以同時進行開發,我們為每個開發人員創建一份“拷貝”。由于Subversion的全局版本號特性,Subversion中分支或基線的創建過程,或Subversion中的“拷貝”過程,真正的操作是在版本庫中創建一個到某一全局版本號的指針(pointer),不再需要針對眾多的單個文件依次執行操作。因此,該操作的成本為一個很小的常數,與項目大小,版本庫大小,文件數目的多少無關;并且,分支或基線的建立不需要進行版本的冗余存儲,新建立的分支或基線基本不占用版本庫空間,分支的后續存儲空間的開銷也只與修改的大小有關。
集成ApacheWebServer,提供更多的特性
通過集成ApacheWebServer,提供更多的特性看SVN與CVS的區別: Subversion通過與ApacheWebServer的集成,可以提供基于http/https協議的版本庫訪問機制,從而支持Subversion跨越防火墻的安全訪問。除此以外,Subversion還可以利用更多的Apache特性,包括但不限于:Apache豐富的用戶認證機制(包括通過LDAP服務器如WindowsActiveDirectory服務器的用戶認證),基于目錄路徑的精細粒度的訪問控制,對傳輸的網絡流量進行壓縮/解壓縮,瀏覽版本庫目錄結構等等。
支持WebDAV
通過是否支持WebDAV看SVN與CVS的區別:WebDAV(Web-basedDistributedAuthoringandVersioning)是一種基于HTTP1.1協議的通信協議.它擴展了HTTP1.1,在GET、POST、HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程序可直接對WebServer直接讀寫,并支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。Subversion通過與ApacheWebServer的集成,支持WebDAV協議,使得業務用戶(businessusers)或非技術用戶在不安裝任何版本管理客戶端的情況下輕松訪問Subversion版本庫,不改變業務用戶已有使用習慣,支持分布的業務用戶對文檔的評審、修改并實現版本控制,真正將軟件開發的生命周期從開發/技術團隊擴展到項目的全部干系人(stakeholder),避免通過電子郵件傳遞文檔的混亂與無序、通過Windows操作系統共享造成的安全漏洞、病毒攻擊、歷史版本被覆蓋或丟失、審計困難等諸多典型問題。
【編輯推薦】
- MyEclipse6.0集成SVN及配置詳解
- CentOS系統中安裝subversion并使用svn+ssh訪問
- 基于Java的svn客戶端工具JavaSVN 1.1.0.beta發布
- 如何結合使用Subversion和Eclipse
- Subversion日期解析函數緩沖區溢出漏洞