Subversion

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

**歷史**
於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，但已經有許多開放-{zh-tw:原碼;zh-hk:原碼;zh-cn:源碼;}-團體決定將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官方網站date=20200915214620 

**SnailSVN**
Mac OS X 平臺下類似 TortoiseSVN 的圖形化 SVN 客戶端，可自動標記文件狀態，並通過右鍵菜單提供各種常用 SVN 功能。
下載 SnailSVN (Mac App Store)date=20170306040656 

**Ankhsvn**
將subversion的操作整合進Visual Studio的SVN 客戶端軟體。
Ankhsvn官方網站date=20110210162309 

**Subclipse**
將Subversion的操作整合進Eclipse的SVN 客戶端軟體。
Subclipse官方網站date=20110825210658 

**Subversive**
和Subclipse相同。
Subversive官方網站date=20101206010755 

**SCPlugin**
Mac OS下類似TortoiseSVN的軟體。
SCPlugin官方網站date=20100925014518 

**SVNx**
Mac OS X下的一款客戶端軟體。
SVNx官方網站date=20101231080800 

**eSVN**
Unix下類似TortoiseSVN的軟體。
eSVN官方網站date=20100831105728 

**kdesvn**
Linux下使用KDE桌面管理下類似TortoiseSVN的軟體。
kdesvn官方網站

**RabbitVCS**
Linux下使用Gnome桌面管理下類似TortoiseSVN的軟體。
RabbitVCS官方網站date=20100927060715 

**GTalkabout**
Windows下整合了討論功能的客戶端軟體。
GTalkabout官方網站date=20140221220858 

**外部連結**
  Subversion官方網站date=20100418232535 
**  Subversion舊官方網站date=20040401153243