對版本控制就有了一定的理解,同時也應該知道svn與cvs是比較流行的兩款scm工具。那麼到底這兩款工具有什麼區別呢?
[b] 1、版本編號方面[/b]
例如,我們的版本庫為a,其中有檔案a,b,c。
在svn中,新版本的版本號不是針對某個特定檔案的,而是針對整個庫而言的。提交了5次和提交了6次,檔案a有可能不同,也有可能相同,即1.0版和1.1版可能相同。因為第6次提交有可能是因為檔案b或c進行了修改。而在cvs中則相反,每次更新可能只對檔案的版本號進行修改,即a檔案的1.0版和1.1版是肯定不同。
(在這裡糾正乙個概念,「檔案a的第2版本」這個說法是錯誤的,應該是「檔案a的第2次修改,即第二次commit」)
svn的全域性性版本編號為svn帶來了諸多的優勢:如對目錄或檔案執行拷貝,無論涉及多少檔案,svn不需要對單個檔案依次執行拷貝命令,僅僅需要建立乙個指向相應的全域性版本號的乙個指標即可。
[b]2、目錄的版本控制[/b]
cvs只能對檔案進行版本控制,不能對目錄進行版本控制,這就導致cvs失去了很多功能:
1)沒有移動操作
cvs裡沒有移動(move)這個操作,當人為進行檔案移動操作時,cvs只能注意到,乙個檔案在乙個位置被刪除了,而在一 個新位置建立了另外乙個檔案。由於它不會連線兩個操作,因此也很容易使檔案歷史軌跡丟失。所以使用cvs時,每個檔案的位置一定要謹慎的選擇。
2)沒有重新命名操作
cvs裡沒有重新命名(rename)這個操作,人為的對檔案進行重新命名會使得命名前後的檔案失去歷史聯絡,而記錄歷史本來是版本管理的主要目的。
3)沒有拷貝操作
cvs中沒有拷貝(copy)這個操作,人為的拷貝對cvs而言,只能看到新的檔案的增加,而不能記錄拷貝原始檔和目標檔案之間的聯絡。
而svn從很大程度上避免了這些不足,svn將目錄作為一類特殊的檔案來處理。當目錄中的子目錄/檔案被刪除、重新命名、或新的子目錄/檔案被建立時,目錄的內容將發生改變。因此,svn象記錄普通檔案的修改歷史一樣記錄對目錄的修改歷史,當發生檔案/目錄的移動、重新命名或拷貝操作時,svn能夠準確記錄操作前後的歷史聯絡。同樣,像對檔案的不同歷史版本進行比較一樣,svn支援對目錄的不同歷史版本的比較,清晰展現目錄的變化歷史。
[b] 3、原子性提交[/b]
cvs和svn同樣作為scm版本控制管理工具,svn的原子性提交可謂是技高一籌啊!
svn提交檔案,只有當全部檔案修改都成功入庫,該提交才變得有效。一旦中斷,svn將會自動執行「回滾」(rollback)操作。svn 這種機制保證所有的修改要麼全部入庫生效,要麼乙個也不入庫。由於svn的原子性提交特性和全域性版本編號方式,當提交成功完成時,乙個唯一的、新的全域性版本編號產生,而提交時使用者提供的日誌資訊與該新的版本編號關聯,只進行一次儲存(區別於cvs的按檔案重複儲存)。
CVS和SVN的區別
第一次參與團隊開發的專案,似乎對cvs和svn都有所涉及,於是找到這篇文章用來學習 前段時間部門內部pcm就svn的 管理和大家進行了分享,中途提到乙個問題,就是和cvs相比,到底svn有何優勢,因為公司內部很早就開始用svn了,所以很多同事都沒有經歷過cvs的時代 偶在前一家公司的時候曾經用過cv...
svn和CVS的關係
1 對重新命名 刪除檔案的支援 cvs 不支援本地檔案重新命名提交 刪除分remove和erase兩種前者把本地和庫中檔案都刪除 後者只是刪除本地檔案 不能刪除資料夾 svn 支援檔案重新命名提交系統會提示刪除舊檔案,建立新檔案 刪除本地檔案提交 庫中檔案也被刪除 2 對中文路徑名的支援 cvs 支...
CVS和SVN開發模式的異同
做版本 方案一 每日定時daily build,build期間鎖庫,做完bvt後打標籤,這樣就按照兩個標籤之間的差異獲取檔案做包。這種方案適合於產品化定期發布的任務。這個方案比較簡單,提交期間是鎖庫方式 有授權才能提交 或者不鎖庫方式看組織的情況了。個人認為,這種方式還是鎖庫給有任務的人開提交許可權...