Subversion
![本頁使用了標題或全文手工轉換](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | |
開發者 | Apache軟件基金會 |
---|---|
首次發布 | 2000年10月20日 |
當前版本 | 1.14.2(2022年4月12日[±] | )
源代碼庫 | |
編程語言 | C |
操作系統 | 跨平台 |
類型 | 版本控制 |
許可協議 | Apache許可證 |
網站 | subversion |
Apache Subversion(簡稱SVN,svn),一個開放源代碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS轉移到Subversion。
歷史
[編輯]CollabNet於2000年創建SVN項目,意在寫出一款近似CVS操作方式的版本控制系統。只不過,此款產品針對CVS的bug和一些缺失的功能,進行了修正和補充。
2000年2月,他們聯繫了Open Source Development with CVS(Coriolis, 1999)的作者Karl Fogel,問他是否願意為這個新專案工作。巧的是這時Karl已經在和他的朋友Jim Blandy討論一個新的版本控制系統的設計。在1995年,兩人開了一家提供CVS技術支持的公司,叫作Cyclic Software。雖然公司已經賣掉了,他們仍然在日常工作中使用CVS。在使用CVS時受到的束縛已經讓Jim開始仔細思考管理版本化數據的更好的路子。他不僅已經起好了名字「Subversion」,而且有了Subvesion資料庫的基本設計。當CollabNet打來電話時,Karl立刻同意為這個專案工作。Jim徵得他的老闆RedHat Software的同意,讓他投入這個專案,而且沒有時間限制。CollabNet雇用了Karl和Ben Collins-Sussman,從5月份開始詳細設計。由於Greg Stein和CollabNet的Brian Behlendorf和Jason Robbins作了恰當的推動,Subversion很快吸引了一個活躍的開發人員社群。這說明了許多人有相同的受制於CVS的經驗,他們對終於有機會對它做點什麼表示歡迎。
最初的設計團隊設定了幾個簡單的目標。他們並不想在版本控制方法論上有新突破。他們只想修補CVS。他們決定Subversion應該與CVS相似,保留相同的開發模型,但不複製CVS最明顯的缺點。雖然它不一定是CVS的完全的替代品,但它應該和CVS相似,從而任何CVS用戶可以不費什麼力氣的轉換過來。
經過14個月的編碼,在2001年8月31號,Subversion可以「自我寄生」了。就是說,Subversion開發人員停止使用CVS管理Subversion的源代碼,開始使用Subversion代替。
雖然CollabNet發起了這個項目,而且仍然資助一大部分的工作(它為一些專職的Subversion開發人員發薪水)。但是Subversion像大部分開放源碼的項目一樣運作,由一個鬆散透明,鼓勵能者多勞的規則管理。CollabNet的版權許可證和Debian FSG完全兼容。換句話說,任何人可以免費下載,修改,按自己的意願重新分發Subversion,而不必得到來自CollabNet或其他任何人的許可。
2009年11月,Subversion被Apache Incubator專案所接收。
2010年1月,正式成為Apache軟件基金會的一個頂級專案。
特性
[編輯]- 統一的版本號。CVS是對每個文件順序編排版本號,在某一時間各文件的版本號各不相同。而Subversion下,任何一次提交都會對所有文件增加到同一個新版本號,即使是提交並不涉及的文件。所以,各文件在某任意時間的版本號是相同的。版本號相同的文件構成軟件的一個版本。
- 原子提交。一次提交不管是單個還是多個文件,都是作為一個整體提交的。在這當中發生的意外例如傳輸中斷,不會引起數據庫的不完整和數據損壞。
- 重命名、複製、刪除文件等動作都保存在版本歷史記錄當中。
- 對於二進制文件,使用了節省空間的保存方法(簡單的理解,就是只保存和上一版本不同之處)。
- 目錄也有版本歷史。整個目錄樹可以被移動或者複製,操作很簡單,而且能夠保留全部版本記錄。
- 分支的開銷非常小。
- 最佳化過的數據庫訪問,使得一些操作不必訪問數據庫就可以做到。這樣減少了很多不必要的和數據庫主機之間的網絡流量。
- 支持元數據(Metadata)管理。每個目錄或文件都可以定義屬性(Property),它是一些隱藏的鍵值對,用戶可以自定義屬性內容,而且屬性和文件內容一樣在版本控制範圍內。
- 支持FSFS和Berkeley DB兩種資料庫格式。
企業級subversion
[編輯]Subversion Multisite
[編輯]對於企業級應用,subversion還有其先天不足,比如對於多個地點的並行開發。Wandisco公司為此開發了subversion multisite,實現異地對等服務器自動同步,支持並行開發以及異地備份。
基於Subversion的ALM平台——UberSVN
[編輯]ALM(Application Lifecycle Management)是軟件配置管理的未來趨勢,各種軟件版本工具包括subversion都要集成到其中。目前UberSVN是唯一的以Subversion為基礎構建的ALM平台,並實現了協同開發以及社交化編碼。
不足
[編輯]- 只能設置目錄的訪問權限,無法設置單個文件的訪問權限(目前可以通過輔助模塊比如wandisco access control實現單文件訪問)。
- 數據庫為二進制格式,無法方便的利用其它軟件讀取數據庫的內容。
使用情況
[編輯]雖然在2006年Subversion的使用族群仍然遠少於傳統的CVS,但已經有許多開放原碼團體決定將CVS轉換為Subversion。已經轉換使用Subversion的包括了FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono以及許多團體。許多開發團隊換用Subversion是因為Trac、SourceForge、CollabNet、CodeBeamer等專案協同作業軟體以及Eclipse、NetBeans等IDE提供Subversion的支援整合。除此之外,一些自由軟體開發的協作網如SourceForge.net除了提供CVS外,現在也提供專案開發者使用Subversion作為源代碼管理系統,JavaForge、Google Code以及BountySource則以Subversion作為官方的源代碼管理系統。
2009年,絕大多數CVS服務已經改用SVN。此時CVS早已經停止維護。不過CVS也有了合適的替代品。
SVN客戶端圖形化軟體
[編輯]TortoiseSVN
[編輯]在windows非常受到歡迎的一套客戶端軟體,它與檔案總管整合得相當不錯,可以透過檔案總管在檔案或目錄上用滑鼠右鍵的選單完成SVN的操作。 TortoiseSVN官方網站(頁面存檔備份,存於網際網路檔案館)
SnailSVN
[編輯]Mac OS X 平台下類似 TortoiseSVN 的圖形化 SVN 客戶端,可自動標記文件狀態,並通過右鍵菜單提供各種常用 SVN 功能。 下載 SnailSVN (Mac App Store)(頁面存檔備份,存於網際網路檔案館)
Ankhsvn
[編輯]將subversion的操作整合進Visual Studio的SVN 客戶端軟體。 Ankhsvn官方網站(頁面存檔備份,存於網際網路檔案館)
Subclipse
[編輯]將Subversion的操作整合進Eclipse的SVN 客戶端軟體。 Subclipse官方網站(頁面存檔備份,存於網際網路檔案館)
Subversive
[編輯]和Subclipse相同。 Subversive官方網站(頁面存檔備份,存於網際網路檔案館)
SCPlugin
[編輯]Mac OS下類似TortoiseSVN的軟體。 SCPlugin官方網站(頁面存檔備份,存於網際網路檔案館)
SVNx
[編輯]Mac OS X下的一款客戶端軟體。 SVNx官方網站(頁面存檔備份,存於網際網路檔案館)
eSVN
[編輯]Unix下類似TortoiseSVN的軟體。 eSVN官方網站(頁面存檔備份,存於網際網路檔案館)
kdesvn
[編輯]Linux下使用KDE桌面管理下類似TortoiseSVN的軟體。 kdesvn官方網站
RabbitVCS
[編輯]Linux下使用Gnome桌面管理下類似TortoiseSVN的軟體。 RabbitVCS官方網站(頁面存檔備份,存於網際網路檔案館)
GTalkabout
[編輯]Windows下整合了討論功能的客戶端軟體。 GTalkabout官方網站(頁面存檔備份,存於網際網路檔案館)
外部連結
[編輯]
|