Subversion

Subversion
開發者Apache软件基金会
首次发布2000年10月20日,​23年前​(2000-10-20
当前版本1.14.2(2022年4月12日,​2年前​(2022-04-12[±]
源代码库
  • svn.apache.org/repos/asf/subversion/trunk/
編輯維基數據鏈接
编程语言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),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内。
  • 支持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,但已經有許多開放源码團體決定將CVS轉換為Subversion。已經轉換使用Subversion的包括了FreeBSD、Apache Software Foundation、KDEGNOMEGCCPythonSambaMono以及許多團體。許多開發團隊換用Subversion是因為TracSourceForgeCollabNet英语CollabNet、CodeBeamer等專案協同作業軟體以及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官方網站(页面存档备份,存于互联网档案馆

外部連結

顶级项目
  • Abdera英语Apache Abdera
  • Accumulo英语Apache Accumulo
  • ActiveMQ
  • Ambari英语Apache Ambari
  • Ant
  • Aries英语Apache Aries
  • Apache Arrow
  • Apache HTTP Server
  • APR
  • Avro
  • Axis
  • Axis2
  • Beam
  • Bloodhound英语Apache Bloodhound
  • Apache Brooklyn英语Apache Brooklyn
  • Buildr英语Apache Buildr
  • Calcite英语Apache Calcite
  • Camel
  • Cassandra
  • Cayenne英语Apache Cayenne
  • Chemistry英语Apache Chemistry
  • CloudStack英语Apache CloudStack
  • Cocoon英语Apache Cocoon
  • Continuum英语Apache Continuum
  • Cordova
  • CouchDB
  • cTAKES英语cTAKES
  • CXF
  • Deltacloud英语Deltacloud
  • Derby
  • Directory英语Apache Directory Server
  • Drill英语Apache Drill
  • Empire-db英语Apache Empire-db
  • ECharts
  • Felix英语Apache Felix
  • Flex
  • Flink
  • Flume英语Apache Flume
  • Forrest英语Apache Forrest
  • Geronimo英语Apache Geronimo
  • Gora英语Apache Gora
  • Gump英语Apache Gump
  • Hadoop
  • Hama英语Apache Hama
  • HBase
  • Hive
  • Jackrabbit英语Apache Jackrabbit
  • James英语Apache James
  • JMeter英语Apache JMeter
  • Kafka
  • Karaf英语Apache Karaf
  • Kylin英语Apache Kylin
  • Lucene
  • Lenya英语Apache Lenya
  • Mahout英语Apache Mahout
  • Marmotta英语Apache Marmotta
  • Maven
  • MINA英语Apache MINA
  • mod_perl英语mod_perl
  • MyFaces英语Apache MyFaces
  • Nutch英语Apache Nutch
  • ODE英语Apache ODE
  • OFBiz英语Apache OFBiz
  • Oozie英语Oozie
  • OpenEJB英语Apache OpenEJB
  • OpenJPA英语Apache OpenJPA
  • OpenNLP
  • OpenOffice
  • PDFBox英语Apache PDFBox
  • Phoenix英语Apache Phoenix
  • POI
  • Pig英语Pig (programming tool)
  • Pivot英语Apache Pivot
  • Qpid英语Apache Qpid
  • River英语Apache River
  • Roller英语Apache Roller
  • RocketMQ
  • Samza英语Apache Samza
  • ServiceMix英语Apache ServiceMix
  • Shindig英语Apache Shindig
  • Shiro
  • Sling英语Apache Sling
  • Spark
  • Stanbol英语Apache Stanbol
  • Storm
  • SpamAssassin
  • Sqoop
  • Apache C++标准库英语stdcxx
  • Struts
  • Struts 2
  • Subversion
  • Tapestry
  • Thrift
  • Tiles英语Apache Tiles
  • Tika英语Apache Tika
  • Tomcat
  • Trafficserver
  • Turbine
  • Tuscany
  • UIMA
  • Velocity
  • Wave
  • Wicket
  • Wink英语Apache Wink
  • Xalan英语Xalan
  • Xerces英语Xerces
  • XMLBeans英语XMLBeans
  • ZooKeeper
ASF logo
Commons项目
  • Apache Commons Logging英语Apache Commons Logging
  • BCEL英语Byte Code Engineering Library
  • BSF英语Bean Scripting Framework
  • Commons Daemon英语Commons Daemon
  • Jelly英语Apache Jelly
Lucene项目
  • Lucene Java
  • Lucene.Net英语Lucene.Net
  • Nutch英语Nutch
  • Solr
Hadoop项目
其他项目
  • Batik
  • Chainsaw英语Chainsaw (log file viewer)
  • FOP
  • Log4j
  • XAP英语Apache XAP
  • Log4Net
  • Ivy英语Apache Ivy
孵化器项目
  • XAP英语Apache XAP
  • Samza英语Apache Samza
  • Storm
Apache Attic
  • AxKit英语AxKit
  • Beehive英语Apache Beehive
  • Click英语Apache Click
  • Apache BlueSky英语BlueSky Open Platform
  • Cactus英语Jakarta Cactus
  • Jakarta
  • Excalibur英语Apache Excalibur
  • Harmony
  • HiveMind英语Apache HiveMind
  • Lenya英语Apache Lenya
  • Slide英语Jakarta Slide
  • Shale英语Apache Shale
  • Shindig英语Apache Shindig
  • stdcxx英语Apache C++ Standard Library
  • iBATIS
  • XMLBeans英语XMLBeans
许可证标准
  • 分类 分类
  • 共享资源页面 维基共享
年代是指第一次發行的穩定版本, 斜体表示軟體不再維護。
主從式架構
  • SCCS英语Source Code Control System (1972)
  • RCS英语Revision Control System (1982)
  • CVS (1990)
  • CVSNT英语CVSNT (1998)
  • Subversion (2000)
  • 分散式控制
    免费或自由软件
  • GNU arch (2001)
  • Darcs英语Darcs (2002)
  • DCVS英语Distributed Concurrent Versions System (2002)
  • SVK (2003)
  • Monotone (2003)
  • Codeville英语Codeville (2005)
  • Git (2005)
  • Mercurial (2005)
  • GNU Bazaar (2005)
  • Fossil (2007)
  • 商业软件
    • Sun WorkShop TeamWare英语Sun WorkShop TeamWare (1990年代?)
    • Code Co-op英语Code Co-op (1997)
    • BitKeeper (1998)
    概念
    • 列表英语List of version control software
    • 比較