首頁 常見問題 svn與cvs的差別是什麼

svn與cvs的差別是什麼

Jun 21, 2022 am 11:40 AM
svn

區別: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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP開發中如何使用SVN進行版本控制 PHP開發中如何使用SVN進行版本控制 Jun 27, 2023 pm 01:39 PM

在PHP開發中進行版本控制是很常見的操作,其中最常用的工具就是SVN(Subversion)。它可以方便地管理程式碼的歷史版本以及協同開發過程中的程式碼更新。以下將介紹如何在PHP開發中使用SVN進行版本控制。一、安裝SVN客戶端和服務端首先需要安裝SVN客戶端和服務端。 SVN客戶端可以在SVN官網上下載對應的版本,安裝即可,而服務端則需要自行搭建,具體方法可以

Java SVN:程式碼倉庫的守護者,確保程式碼穩定性 Java SVN:程式碼倉庫的守護者,確保程式碼穩定性 Mar 09, 2024 am 09:20 AM

SVN簡介SVN(Subversion)是一種集中式版本控制系統,用於管理和維護程式碼庫。它允許多個開發者同時協作開發程式碼,並提供對程式碼歷史修改的完整記錄。透過使用SVN,開發者可以:保障程式碼穩定性,避免程式碼遺失和損壞。追蹤程式碼修改歷史,輕鬆回滾到之前的版本。協同開發,多個開發者同時修改程式碼而不會衝突。 SVN基本操作要使用SVN,需要安裝SVN客戶端,例如TortoiseSVN或SublimeMerge。然後,您可以按照以下步驟執行基本操作:1.建立程式碼庫svnmkdirHttp://exampl

詳解如何安裝和設定EclipseSVN插件 詳解如何安裝和設定EclipseSVN插件 Jan 28, 2024 am 08:42 AM

EclipseSVN插件的安裝和設定方法詳解Eclipse是一個廣泛使用的整合開發環境(IDE),它支援許多不同的插件來擴展其功能。其中之一是EclipseSVN插件,它使開發人員能夠與Subversion版本控制系統進行互動。本文將詳細介紹如何安裝和設定EclipseSVN插件,並提供具體的程式碼範例。第一步:安裝EclipseSVN外掛程式開啟Eclipse

svn與vss的差別是什麼 svn與vss的差別是什麼 Jun 21, 2022 am 11:23 AM

差別:1、vss是微軟開發的,是收費的,而svn是開源免費的;2、vss必須有客戶端,而svn可以用客戶端,也可以用命令列模式,還可以用網頁方式只讀存取;3、vss只支援windows系統,而svn支援windows和linux系統;4、vss是「鎖定-編輯-解鎖」模式,svn預設是「修改-衝突-合併」模式;5、vss的版本號對應的是單一文件,svn的版本號碼對應的是整個版本庫。

SVN在CentOS上的安裝及命令列安裝 SVN在CentOS上的安裝及命令列安裝 Feb 13, 2024 am 11:24 AM

在CentOS上安裝SVN是非常常見的操作,它是一個功能強大的版本控制系統,可以用於管理和追蹤軟體開發過程中的變更,本文將詳細介紹如何在CentOS上安裝SVN,並提供一些常用的命令列安裝方法。在CentOS上安裝SVN有多種方法,以下將介紹兩種常用的安裝方式。 1.開啟終端,以root使用者身分登入。 2.執行以下命令更新系統軟體包清單:```yumupdate3.執行以下命令安裝SVN:yuminstallsubversion4.安裝完成後,可以透過執行以下命令驗證SVN是否成功安裝:svn--v

用vimdiff取代svn diff:比較程式碼的工具 用vimdiff取代svn diff:比較程式碼的工具 Jan 09, 2024 pm 07:54 PM

在linux下,直接使用svndiff指令查看程式碼的修改是很吃力的,於是在網路上搜尋了一個比較好的解決方案,就是讓vimdiff作為svndiff的檢視程式碼工具,尤其對於習慣用vim的人來說真的是很方便。當使用svndiff指令比較某個檔案的修改前後時,例如執行下列指令:$svndiff-r4420ngx_http_limit_req_module.c那麼實際上會向預設的diff程式傳送如下指令:-u-Lngx_http_limit_req_module.c(revision4420)-Lngx_

Linux開發者的必備技能:簡單掌握SVN版本控制 Linux開發者的必備技能:簡單掌握SVN版本控制 Jan 26, 2024 pm 09:54 PM

身為Linux開發人員,往往需要運用SVN控制專案版本。對於優秀開發者而言,熟知如何查閱SVN版本無疑是必備技能之一。今日,筆者想藉此機會和各位分享自己的心得,希望能助您更能掌握這項實用技巧。 1.安裝SVN命令列工具請先在Linux環境中安裝SVN命令列工具哦!請撥通終端,然後穩健地輸入下面這條指令來完成安裝吧:```尊敬的用戶,請執行sudoapt-getinstallsubversion以安裝Subversion。 2.連接到SVN伺服器安裝完畢後,我們需要連接到SVN伺服器。輸入以下命令:

PHP入門指南:SVN版本管理 PHP入門指南:SVN版本管理 May 20, 2023 am 08:29 AM

作為常用的伺服器端腳本語言,PHP憑藉其開源、跨平台的優勢,被廣泛應用於Web開發領域。而在多人協作的開發中,版本控制是一個不可或缺的工具,它可以有效地管理原始碼的修改與更新,避免因團隊成員之間程式碼不同步而造成的衝突。而SVN作為一款流行的版本控制工具,在PHP開發的應用也十分廣泛。本文將為大家介紹PHP開發中的SVN版本控制的基礎知識,包括SVN的安