Subversion

维基百科,自由的百科全书

跳转到: 导航, 搜索

Subversion

File:Subversion.png
開發 CollabNet, Inc.
最新版本 1.6.1 / 2009-04-10; 3 個月前
作業系統 跨平台
類型 版本控制
許可協議 Subversion許可證
網站 http://subversion.tigris.org/

Subversion,简称SVN,是一個开放源代码版本控制系統,相對於的RCSCVS,採用了分支管理系統,它的設計目標就是取代CVS。互聯網上越来越多的控制服務从CVS转移到Subversion。

目录

[编辑] Subversion的历史

在2000年初,开发人员要写一个CVS的自由软件代替品,它保留CVS的基本思想,但没有它的错误和局限。

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开发人员发薪水)。但是Subversoin象大部分开放源码的项目一样运作,由一个松散透明,鼓励能者多劳的规则管理。CollabNet的版权许可证和Debian FSG完全兼容。换句话说,任何人可以免费下载,修改,按自己的意愿从新分发Subversion,而不必得到来自CollabNet或其他任何人的许可。

[编辑] 優於CVS之處

  • 统一的版本号。CVS是对每个文件顺序编排版本号,在某一时间各文件的版本号各不相同。而Subversion下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。
  • 原子提交。一次提交不管是單個還是多個文件,都是作為一個整體提交的。在這當中發生的意外例如傳輸中斷,不會引起數據庫的不完整和數據損壞。
  • 重命名、複製、刪除文件等動作都保存在版本歷史記錄當中。
  • 對於二進制文件,使用了節省空間的保存方法。(簡單的理解,就是只保存和上一版本不同之處)
  • 目錄也有版本歷史。整個目錄樹可以被移動或者複製,操作很簡單,而且能夠保留全部版本記錄。
  • 分支的開銷非常小。
  • 優化過的數據庫訪問,使得一些操作不必訪問數據庫就可以做到。這樣減少了很多不必要的和數據庫主機之間的網絡流量。
  • 支持元数据(Metadata)管理。每个目录或文件都可以定义属性(Property),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内。

[编辑] 不足

  • 只能设置目录的访问权限,无法设置单个文件的访问权限。

[编辑] 使用情況

雖然在2006年Subversion的使用族群仍然遠少於傳統的CVS,但已經有許多開放原碼團體決定將CVS轉換為Subversion。已經轉換使用Subversion的包括了FreeBSDApache Software FoundationKDEGNOMEGCCPythonSambaMono以及許多團體。許多開發團隊換用Subversion是因為 TracSourceForgeCollabNetCodeBeamer等專案協同作業軟體以及EclipseNetBeansIDE提供Subversion的支援整合。除此之外,一些自由軟體開發的協作網如SourceForge.net除了提供CVS外,現在也提供專案開發者使用Subversion作為源代码管理系統,JavaForgeGoogle Code以及BountySource則以Subversion作為官方的源代码管理系統。

2009年,绝大多数CVS服务已经改用SVN。此时CVS早已经停止维护。不过SVN也有了合适的替代品。

[编辑] 外部鏈接

个人工具