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官方网站页面存档备份,存于互联网档案馆

外部链接[编辑]