Subversion

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Subversion
開發者Apache軟件基金會
首次釋出2000年10月20日,​23年前​(2000-10-20
目前版本1.14.2(2022年4月12日,​23個月前​(2022-04-12[±]
原始碼庫 編輯維基數據連結
程式語言C
作業系統跨平台
類型版本控制
特許條款Apache特許條款
網站subversion.apache.org

Apache Subversion(簡稱SVN,svn),一個開放原始碼版本控制系統,相較於RCSCVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS轉移到Subversion。

歷史[編輯]

CollabNet英語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),它是一些隱藏的鍵值對,用戶可以自訂屬性內容,而且屬性和檔案內容一樣在版本控制範圍內。
  • 支援FSFSBerkeley 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的包括了FreeBSDApache Software FoundationKDEGNOMEGCCPythonSambaMono以及許多團體。許多開發團隊換用Subversion是因為TracSourceForgeCollabNet英語CollabNetCodeBeamer等專案協同作業軟件以及EclipseNetBeansIDE提供Subversion的支援整合。除此之外,一些自由軟件開發的協作網如SourceForge.net除了提供CVS外,現在也提供專案開發者使用Subversion作為原始碼管理系統,JavaForgeGoogle Code以及BountySource英語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官方網站頁面存檔備份,存於互聯網檔案館

外部連結[編輯]