全球专业中文经管百科,由121,994位网友共同编写而成,共计436,007个条目

SVN

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

目錄

什麼是SVN

  SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,通過採用分支管理系統的高效管理,簡而言之就是用於多個人共同開發同一個項目,實現共用資源,實現最終集中式的管理。相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的。

  SVN伺服器有2種運行方式:獨立伺服器和藉助apache運行。兩種方式各有利弊,用戶可以自行選擇。

  SVN存儲版本數據也有2種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要資料庫的存儲系統)。因為BDB方式在伺服器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。

SVN發展歷史

  在2000年初,開發人員要寫一個CVS的自由軟體代替品,它保留CVS的基本思想,但沒有它的錯誤和局限,保留CVS的基本特性但去除CVS的bug和不好的特性。

  在2000年2月,他們聯繫《使用CVS開發開源項目》(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel,並征求了他是否願意在這個新的項目中擔任一個角色。巧合的是,當時Karl已經和他的朋友Jim Blandy討論了一個關於新的版本控制系統的設計。在1995年,這兩人就成立了Cyclic Software,一個提供CVS的商業支持的軟體公司。雖然他們經營商業服務,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim認真思考更好的方法來管理數據,不但確定名字為“Subversion”,而且完成了Subversion檔案庫的基礎設計。

  當CollabNet的電話到來時,Karl立即答應了加入項目中,而且Jim讓他的雇主RedHat Software同意讓他在這個項目中不定期工作。CollabNet雇用了Karl和Ben Collins-Sussman,併在5月開始了詳細設計工作。在得到了來自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(當時是一名活躍在WebDAV/DeltaV規範過程的自由程式員)很多創意的幫助下,Subversion很快地引起了一個活躍開發者社區的註意。它找出並歡迎很多同樣在CVS上受到挫折的社員能來為這個項目做點什麼。

  Subversion 最初的設計Team定下了幾個簡單的目標。 它必須在功能上可取代 CVS,也就是說, 所有 CVS 可做到的事, 它都要能夠作到。 在修正最明顯的瑕疵的同時, 還要保留相同的開發模式。 還有, Subversion 應該要和 CVS 很相像, 任何 CVS 使用者只要花費少許的力氣, 就可以很快地上手。

  經過十四個月的編碼後, Subversion 於2001年8月31日開始實現 “自行管理”。 也就是說, 開發人員不再使用 CVS 來管理 Subversion 的代碼, 而以 Subversion 自己來管理。

  2009年11月,Subversion被Apache Incubator專案所接收。

SVN和CVS的差異

  所有的文檔都顯示SVN可以取代CVS,同時SVN的問題和缺點都被隱藏了。不幸的是,我們並不認為SVN是CVS的替代品,儘管很多缺陷都被修改了。更有甚者,它甚至讓人重回CVS。CVS和SVN的比較類似於比較C++和Java。很明顯CVS和SVN都遠比SourceSafe強大的多,如同C++和Java比Basic強大的多。CVS代表了幾乎代碼控制系統的所有功能項,儘管有時他的實現並不很方便。SVN修正並添加了一些CVS並不擁有的功能。例如,創建標誌和分支dubious,你在編輯文件時其他人不會有任何通知。SVN並不是CVS的替代品,只是個不同的系統,類似於CVS。它有些特有的功能,足以作為採用它的理由。這些功能使他更適合於開發環境,例如對PowerBuilder。下麵你可以找到兩者的相對優勢、劣勢。

  1、存儲類型格式

  CVS是個基於RCS文件的版本控制系統。每個CVS文件都不過是普通的文件,加上一些額外信息。這些文件會簡單的重覆本地文件的樹結構。因此,不必擔心有什麼數據損失,如果必要的話可以手工修改RCS文件。

  SVN是基於關係資料庫的(BerkleyDB)或一系列二進位文件的(FS_FS)。一方面這解決了許多問題 (例如,並行讀寫共用文件)以及添加了許多新功能(例如運行時的事務特性。)。然而另一方面,數據存儲由此變得不透明。

  2、速度

  CVS比較慢。

  整體而言,由於架構實現的不同, SVN的確比CVS快很多。在網路上它只傳輸很少的信息並支持更多的離線模式的功能。但這也是有代價的。速度的代價就是巨大的存儲(完全備份所有的工作文件)。

  3 標誌&分支

  SVN採用標誌和分支而拋棄了其他三件東西,實際上這意味著他們把這個概念替換為在檔案庫內部複製文件或目錄以便保存日誌。這樣一來,無論標誌創建還是分支創建都只是倉庫內部的文件複製了。對分支而言:分支不過是在倉庫內部的一個單獨的目錄而已了,不像早期還有些什麼交錯。對標誌而言:已經不能對代碼加標誌了。在某種程度上說,SVN全文件編號補足了這個缺陷,SVN里整個倉庫都有版本號,但不是針對單個文件。

  4、元數據

  CVS只允許存儲文件。

  SVN允許一個文件有任意多的可命名屬性,功能十分完全。

  5 文件類型

  CVS最初是為文本文件存儲而設計的。因此其他文件類型(二進位,統一碼)文件的支持幾乎沒有,如需要的話則要有其他信息,並且客戶端伺服器端都要調整。

  SVN會關心所有的文件類型,不需要你來手工操作。

  6、回滾

  CVS允許任意的回滾,在任意一個已遞交的版本上,儘管這要花些時間(所有的文件都要分別處理)。

  SVN不允許遞交後回滾。建議把版本庫里好的狀態版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無論如何也是會存在資料庫里的。(SVN的滾回操作實際上是merge操作)

  7、事務

  CVS中的“零或一”事務原則根本沒有實現。如果檢入幾個文件的話(加到伺服器上),很有可能部分文件完成了,而另幾個沒有。作為一個潛規則,手工糾正這些並且對餘下的文件 (而不是所有文件)一一重覆檢入。這樣這些文件將在兩階段中被檢入。SVN的確支持“零或一”事務原則,這是SVN的一大優勢。

本條目對我有幫助3
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

Mis铭,刘维燎,赵先生.

評論(共0條)

提示:評論內容為網友針對條目"SVN"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

下载APP

闽公网安备 35020302032707号