Apache Subversion(简称SVN)一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。简而言之SVN就是用于多个人共同开发同一个项目,共用资源的目的。
Apache Subversion(简称 SVN)一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 转移到 Subversion。说得简单一点 SVN 就是用于多个人共同开发同一个项目,共用资源的目的。
SVN 服务器有 2 种运行方式:独立服务器和借助 apache 运行。两种方式各有利弊,用户可以自行选择。SVN 存储版本数据也有 2 种方式:BDB(一种事务安全型表类型)和 FSFS(一种不需要数据库的存储系统)。因为 BDB 方式在服务器中断时,有可能锁住数据,所以还是 FSFS 方式更安全一点。
SVN 相关历史
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 软件基金会的一个顶级项目。