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