第一次參與團隊開發的專案,似乎對cvs和svn都有所涉及,於是找到這篇文章用來學習**。
前段時間部門內部pcm就svn的**管理和大家進行了分享,中途提到乙個問題,就是和cvs相比,到底svn有何優勢,因為公司內部很早就開始用svn了,所以很多同事都沒有經歷過cvs的時代;
偶在前一家公司的時候曾經用過cvs,就從開發人員的使用角度來說差別並不明顯,我能想起來的也就是兩三點:1、cvs對目錄的管理非常不友好,無法跟蹤目錄的變動情況;2、檔案無法重新命名提交;3、對二進位制檔案(比如)的管理不好,**合併時經常問題;
cvssvn
關於版本號
基於檔案的自增序列號。
基於全域性的自增序列號,而不僅僅針對檔案,還包括目錄等。
儲存型別格式
cvs是個基於rcs檔案的版本控制系統。每個cvs檔案都不過是普通的檔案,加上一些額外資訊。這些檔案會簡單的重複本地檔案的樹結構。因此,不必擔心有什麼資料損失,如果必要的話你可以手工修改rcs檔案。
svn是基於關聯式資料庫的(berkleydb)或一系列二進位制檔案的(fs_fs)。一方面這解決了許多問題 (例如,並行讀寫共享檔案)以及新增了許多新功能(例如執行時的事務特性。)。然而另一方面,資料儲存由此變得不透明,或是說並不那麼使用者友好了。那就是 為什麼工具軟體,對倉庫 (資料庫)變得那麼重要了。
訪問速度
比較慢;因為他基於單向(服務端-->客戶端)差異化檔案傳輸
整體而言,由於架構實現的不同, svn的確比cvs快很多;因為採用雙向差異化檔案傳輸。
在網路上它只傳輸很少的資訊並支援更多的離線模式的功能。但這也是有代價的。速度的代價就是巨大的儲存(完全備份所有的工作檔案)。
元資料只允許儲存檔案
允許乙個檔案有任意都的可命名屬性。功能十分完全,但不知到底有什麼用
檔案型別
最初是為文字檔案儲存而設計的。因此其他檔案型別(二進位制,統一碼)檔案的支援幾乎沒有如需要的話則要有其他資訊,並且客戶端伺服器端都要調整。
svn會關心所有的檔案型別,不需要你來手工操作;因為他的儲存是基於二進位制的
滾回cvs允許任意的滾回,在任意乙個已遞交的版本上,儘管著要華些時間(所有的檔案都要分別處理)。
svn不允許遞交後滾回。我們建議把倉庫裡好的狀態版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無論如何也是會存在資料庫裡的。
事務cvs中的 「零或一」事務原則根本沒有實現。如果檢入幾個檔案的話(加到伺服器上),很有可能部分檔案完成了,而另幾個沒有。最為乙個潛規則,手工糾正這些並且對余 下的檔案 (而不是所有檔案)一一重複檢入。這樣這些檔案將在兩階段中被檢入。但至今為止,因為這個功能缺少而導致的資料倉儲損壞的案例還沒有出現過。
支援「零或一」事務原則,這是svn的一大優勢
架構、**、可擴充套件性
cvs是個古老的系統。起初cvs只是一些運用rcs的指令碼檔案。後來這些指令碼被組成乙個單個應用程式,但內部結構仍然有待改進。直到今天,仍有 人企圖從頭開始,重寫一遍cvs,但都不成功。我們曾經嘗試國重寫客戶端**以期更好的整合效果,但是,不成功。現在我們都不認為cvs在功能上能走到多 遠了。
subversion的開發員的確花了許多時間在內部架構上。我們仍然不知道這些決策有多大的正確性等等。但有一點可以肯定,**有良好的可擴充套件性,增強工作也在進行著。
網路層不能與apache web server整合
重新命名、刪除操作
不支援本地檔案重新命名提交;
刪除分remove和erase兩種前者把本地和庫中檔案都刪除,後者只是刪除本地檔案;
不能刪除資料夾
支援檔案重新命名提交系統會提示刪除舊檔案,建立新檔案
刪除本地檔案提交 庫中檔案也被刪除
使用者訪問許可權
有read、write、creat、none這四種許可權,任何人不能刪除資料夾(admin也只能跑到伺服器上把相應資料夾殘忍刪除?我暫時只知道這個方法……)
只有read、write、none三種許可權 creat和delete許可權好象和write是**在一起的
建立分支與基線
cvs 在建立分支的時候,需要對所有進行分支的檔案進行依次的操作,因此分支的建立成本(主要是建立分支所需的時間,或消耗的計算資源)與參與分支的檔案數量成比例,專案越大,版本庫越大,檔案越多,分支的建立成本越高;基線(tag)的建立與此類似。
svn 的分支和基線是通過執行「拷貝」來建立的:回想一下在沒有引入版本管理工具的時候我們是如何進行所謂的「分支」和「基線」管理的?答案顯然是「拷貝」 — 我們通過「拷貝」或「備份」來建立基線;同樣,為支援多個開發人員可以同時進行開發,我們為每個開發人員建立乙份「拷貝」。
SVN和CVS的區別
對版本控制就有了一定的理解,同時也應該知道svn與cvs是比較流行的兩款scm工具。那麼到底這兩款工具有什麼區別呢?b 1 版本編號方面 b 例如,我們的版本庫為a,其中有檔案a,b,c。在svn中,新版本的版本號不是針對某個特定檔案的,而是針對整個庫而言的。提交了5次和提交了6次,檔案a有可能不同...
svn和CVS的關係
1 對重新命名 刪除檔案的支援 cvs 不支援本地檔案重新命名提交 刪除分remove和erase兩種前者把本地和庫中檔案都刪除 後者只是刪除本地檔案 不能刪除資料夾 svn 支援檔案重新命名提交系統會提示刪除舊檔案,建立新檔案 刪除本地檔案提交 庫中檔案也被刪除 2 對中文路徑名的支援 cvs 支...
CVS和SVN開發模式的異同
做版本 方案一 每日定時daily build,build期間鎖庫,做完bvt後打標籤,這樣就按照兩個標籤之間的差異獲取檔案做包。這種方案適合於產品化定期發布的任務。這個方案比較簡單,提交期間是鎖庫方式 有授權才能提交 或者不鎖庫方式看組織的情況了。個人認為,這種方式還是鎖庫給有任務的人開提交許可權...