Apache Subversion 通常被縮寫成 SVN,是一個開放源代碼的版本控制系統(tǒng),Subversion 在 2000 年由 CollabNet Inc 開發(fā),現在發(fā)展成為 Apache 軟件基金會的一個項目,同樣是一個豐富的開發(fā)者和用戶社區(qū)的一部分。這個教程給你提供一個理解 SVN 系統(tǒng),操作當前和歷史版本的文件,比如代碼、網頁、文檔。
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統(tǒng),相較于RCS、CVS,它采用了分支管理系統(tǒng),它的設計目標就是取代CVS?;ヂ摼W上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用于多個人共同開發(fā)同一個項目,共用資源的目的。
1 存儲類型格式
CVS是個基于RCS文件的版本控制系統(tǒng)。每個CVS文件都不過是普通的文件,加上一些額外信息。這些文件會簡單的重復本地文件的樹結構。因此,不必擔心有什么數據損失,如果必要的話可以手工修改RCS文件。
SVN是基于關系數據庫的(BerkleyDB)或一系列二進制文件的(FS_FS)。一方面這解決了許多問題 (例如,并行讀寫共享文件)以及添加了許多新功能(例如運行時的事務特性。)。然而另一方面,數據存儲由此變得不透明。
2 速度
CVS比較慢。
整體而言,由于架構實現的不同, SVN的確比CVS快很多。在網絡上它只傳輸很少的信息并支持更多的離線模式的功能。但這也是有代價的。速度的代價就是巨大的存儲(完全備份所有的工作文件)。
3 、標志&分支
SVN采用標志和分支而拋棄了其他三件東西,實際上這意味著他們把這個概念替換為在檔案庫內部復制文件或目錄以便保存日志。這樣一來,無論標志創(chuàng)建還是分支創(chuàng)建都只是倉庫內部的文件復制了。對分支而言:分支不過是在倉庫內部的一個單獨的目錄而已了,不像早期還有些什么交錯。對標志而言:已經不能對代碼加標志了。在某種程度上說,SVN全文件編號補足了這個缺陷,SVN里整個倉庫都有版本號,但不是針對單個文件。
4、元數據
CVS只允許存儲文件。
SVN允許一個文件有任意多的可命名屬性,功能十分完全。
5、文件類型
CVS最初是為文本文件存儲而設計的。因此其他文件類型(二進制,統(tǒng)一碼)文件的支持幾乎沒有,如需要的話則要有其他信息,并且客戶端服務器端都要調整。
SVN會關心所有的文件類型,不需要你來手工操作。
6、回滾
CVS允許任意的回滾,在任意一個已遞交的版本上,盡管這要花些時間(所有的文件都要分別處理)。
SVN不允許遞交后回滾。建議把版本庫里好的狀態(tài)版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無論如何也是會存在數據庫里的。(SVN的滾回操作實際上是merge操作)
7、事務
CVS中的“零或一”事務原則根本沒有實現。如果檢入幾個文件的話(加到服務器上),很有可能部分文件完成了,而另幾個沒有。作為一個潛規(guī)則,手工糾正這些并且對余下的文件 (而不是所有文件)一一重復檢入。這樣這些文件將在兩階段中被檢入。SVN的確支持“零或一”事務原則,這是SVN的一大優(yōu)勢。
本教程是讓對有版本控制需求且對 SVN 感興趣的軟件開發(fā)人員學習 SVN 的基本知識,通過本教程你可以一步一步了解 SVN 的使用。
SVN 官網:https://subversion.apache.org/
Github SVN 源碼:https://github.com/apache/subversion
java教程:http://www.o2fo.com/java/