首頁 > 常見問題 > 主體

svn與cvs的差別是什麼

青灯夜游
發布: 2022-06-21 11:40:41
原創
3474 人瀏覽過

區別:1、CVS的版本號是基於文件的自增序號,而SVN的則是基於全域的自增序號,不僅針對文件,還包括目錄;2、CVS是基於RCS文件的,而SVN是基於關聯式資料庫或一系列二進位檔案的;3、CVS允許任意的滾回,而SVN不允許遞交後滾回;4、SVN支援「零或一」事務原則,而CVS不支援; 5.CVS不支援本機檔案重新命名提交,而SVN支援;6、CVS有四種權限,而SVN只有三種權限。

svn與cvs的差別是什麼

本教學操作環境:windows7系統、Subversion 1.14版、Dell G3電腦。

CVS(Concurrent Versions System):

是開發原始碼的並發版本系統 。它可用於各種平台,包括 Linux 、Unix和 Windows NT/2000/XP等。 CVS免費開源,對專案進行版本管理。

功能介紹:

1、 程式碼統一管理,保存所有程式碼檔案變更的歷史記錄。對程式碼進行集中統一管理,可以方便查看新增或刪除的文件,能夠追蹤所有程式碼改變痕跡。可以隨意恢復到以前任一個歷史版本。並避免了因為版本不同引入的深層BUG。

2、 完善的衝突解決方案,可以方便的解決文件衝突問題,而不需要藉助其它的文件比較工具和手工的貼上複製。  

3、 程式碼權限的管理。可以為不同的使用者設定不同的權限。可以設定存取使用者的密碼、唯讀、修改等權限,而且透過CVS ROOT目錄下的腳本,提供了相應功能擴充的接口,不但可以完成精細的權限控制,還能完成更加個人化的功能。 

4、 支援方便的版本發佈和分支功能。

SVN(Subversion):

  • # SVN全名Subversion,即版本控制系統。 SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。網路上有許多版本控制服務已從CVS遷移到Subversion。

  •  SVN是一種集中式檔案版本管理系統。

  • 集中式程式碼管理的核心是伺服器,所有開發者在開始新一天的工作之前必須從伺服器取得程式碼,然後開發,最後解決衝突,提交。所有的版本資訊都放在伺服器上。如果脫離了伺服器,開發者基本上就是不可以工作。

(SVN)集中式管理的工作流程:

集中式程式碼管理的核心是伺服器,所有開發者在開始新一天的工作之前必須從伺服器取得程式碼,然後開發,最後解決衝突,提交。所有的版本資訊都放在伺服器上。如果脫離了伺服器,開發者基本上就是不可以工作。 

 管理流程如下圖: 

svn與cvs的差別是什麼

#svn與cvs的差異


CVS SVN
關於版本號碼 基於文件的自增序號。 基於全域的自增序號,而不僅僅針對文件,還包括目錄等。
儲存類型格式 CVS是基於RCS檔案的版本控制系統。每個CVS文件都不過是普通的文件,加上一些額外資訊。這些文件會簡單的重複本機文件的樹狀結構。因此,不必擔心有什麼資料損失,如果必要的話你可以手動修改RCS檔案。 SVN是基於關聯式資料庫的(BerkleyDB)或一系列二進位檔案的(FS_FS)。一方面這解決了許多問題 (例如,並行讀寫共享文件)以及添加了許多新功能(例如運行時的事務特性。)。然而另一方面,資料儲存由此變得不透明,或是說並不那麼用戶友好了。那就是為什麼工具軟體,對倉庫 (資料庫)變得那麼重要了。
存取速度 比較慢;因為他基於單向(服務端-->客戶端)差異化檔案傳輸 整體而言,由於架構實現的不同, SVN的確比CVS快很多;因為採用雙向差異化文件傳輸。
在網路上它只傳輸很少的信息並支援更多的離線模式的功能。但這也是有代價的。速度的代價就是龐大的儲存空間(完全備份所有的工作文件)。
元資料 只允許儲存檔案 允許一個檔案有任意都的可命名屬性。功能十分完全,但不知到底有什麼用
檔案類型 最初是為文字檔案儲存而設計的。因此其他文件類型(二進制,統一碼)文件的支援幾乎沒有如需要的話則要有其他信息,並且客戶端伺服器端都要調整。 SVN會關心所有的檔案類型,不需要你來手動操作;因為他的儲存是基於二進位的
滾回 CVS允許任意的滾回,在任意一個已遞交的版本上,儘管著要華些時間(所有的文件都要分別處理)。 SVN不允許遞交後滾回。我們建議把倉庫裡好的狀態版本加到最後,覆蓋掉損壞的版本。而損壞的版本無論如何也是會存在資料庫裡的。
事務 CVS中的 「零或一」事務原則根本沒有實現。如果檢入幾個文件的話(加到伺服器上),很有可能部分文件完成了,而另幾個沒有。最為一個潛規則,手工糾正這些並且對餘下的文件 (而不是所有文件)一一重複檢入。這樣這些文件將在兩階段中被檢入。但至今為止,因為這個功能缺少而導致的資料倉儲損壞的案例還沒有出現過。 支援「零或一」事務原則,這是SVN的一大優勢
架構、程式碼、可擴展性 CVS是個古老的系統。起初CVS只是一些運用RCS的腳本檔。後來這些腳本被組成一個單一應用程序,但內部結構仍有待改進。直到今天,仍有人企圖從頭開始,重寫一遍CVS,但都不成功。我們曾經嘗試國重寫客戶端程式碼以期更好的整合效果,但是,不成功。現在我們都不認為CVS在功能上能走到多遠了。 Subversion的開發員的確花了許多時間在內部架構上。我們仍然不知道這些決策有多大的正確性等等。但有一點可以肯定,程式碼有良好的可擴展性,增強工作也在進行著。
重新命名、刪除操作 不支援本機檔案重新命名提交;
刪除分remove和erase兩種前者把本機和庫中檔案都刪除,後者只是刪除本地文件;
不能刪除資料夾
支援文件重命名提交系統會提示刪除舊文件,創建新文件
刪除本機檔案提交庫中檔案也被刪除
使用者存取權限 #有read、write、creat、none這四種權限,任何人都無法刪除資料夾(admin也只能跑到伺服器上把對應資料夾殘忍刪除?我暫時只知道這個方法…) #只有read、write、none三種權限creat和delete權限好像和write是捆綁在一起的
建立分支與基準 CVS 在建立分支的時候,需要對所有進行分支的檔案進行依序的操作,因此分支的建立成本(主要是建立分支所需的時間,或消耗的計算資源)與參與分支的文件數量成比例,項目越大,版本庫越大,文件越多,分支的建立成本越高;基線(tag)的建立與此類似。 SVN 的分支和基準是透過執行「拷貝」來建立的:回想一下在沒有引入版本管理工具的時候我們是如何進行所謂的「分支」和「基準」管理的?答案顯然是「拷貝」 — 我們透過「拷貝」或「備份」來建立基準;同樣,為支援多個開發人員可以同時進行開發,我們為每個開發人員創建一份「拷貝」。

(學習影片分享:程式設計基礎影片

以上是svn與cvs的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
svn
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!