Subversion
開發者 | Apache軟體基金會 |
---|---|
首次釋出 | 2000年10月20日 |
目前版本 | 1.14.8(2024年10月8日[±] | )
原始碼庫 | |
程式語言 | 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官方網站(頁面存檔備份,存於網際網路檔案館)