Subversion1.5已发布,新特性值得期待

Subversion已被广泛应用但是也在不断的更新,这里介绍一下Subversion1.5发布,以及它的新特性。

CSDN从Subversion中文站第一时间拿到了它的中文版的发布说明。在此感谢Subversion中文站的文章提供。另外他们还为大家准备了Subversion1.5专题,给许多特性提供了更深入的讨论。还有他们翻译的《使用Subversion进行版本控制》也已经发布1.4版本,最新的1.5版本也正在翻译中。言归正传,让我们看一下Subversion1.5的新东西吧。

此次的版本的更新主要包括以下几个方面:
1、合并跟踪(基础)
2、稀疏检出(通过新的–depth选项)
3、交互式的冲突解决
4、变更列表支持
5、svn:externals的相对URL和peg修订版本
6、对于ra_svn和svnserve的CyrusSASL支持
7、通过sharding对于FSFS的大规模开发的支持
8、FSFS优化,通过不变的文件隔离
9、WebDAV的透明通过代理写
10、copy和move的改进
11、速度改进,取消响应改进
12、更简单的使用试验ra_serfDAV访问模块
13、API改变、改进以及语言绑定
14、超过150的bug修正,改进

Subversion1.5是以前Subversion发布版本的超集,可以认为是当前“最好的”版本。包含所有1.0.x到1.4.x的,以及以前版本没有的修正和特性。所有的新特性将会写入Subversionbook,见svnbook.red-bean.com。

兼容性问题

以前的客户端和服务器可以直接与1.5的服务器和客户端交互,然而,如果服务器和客户端不全是1.5时,一些新的1.5特性(例如合并跟踪)将会不可用,而另外一些特性如稀疏检出,在服务器是旧的,客户端是新的时,可以运行但是效率比较低。
没有必要转储并重新加载版本库,subversion1.5可以读取以前创建的版本,升级只需用最新的库和二进制程序覆盖原来的程序。
Subversion会维护与先前版本API/ABI的兼容,只会增加新的特性,而不会删除旧的特性。根据1.0,1.1,1.2,1.3或1.4的API编写的程序,可以使用1.5的库编译,为1.5编写的程序不必为旧库编译或运行。

新特性的兼容性表格
新特性
MinimumClient
MinimumServer
MinimumRepository
Notes

合并跟踪(基础)
1.5,1.5,1.5

稀疏检出(通过新的–depth选项)
1.5,any,any

交互式的冲突解决
1.5,any,any

变更列表支持
1.5,any,any

svn:externals的相对URL和peg修订版本
1.5,any,any

对于ra_svn和svnserve的CyrusSASL支持
any*,1.5,any*,1.5,any
◆受限,见SASL和svn://兼容性 过sharding对于FSFS的大规模开发的支持
any*,1.5,1.5,1.5
◆1.5file://兼容性需要FSFS优化,通过不变的文件隔离
any*,1.5,1.5,1.5
◆1.5file://兼容性需要WebDAV的透明通过代理写
any,1.5*,any
◆需要Apache2.2服务器copy和move的改进
1.5,any*,1.5,any
◆受限,见copy和move的改进

速度改进,取消响应改进
1.5,any,any

更简单的使用试验ra_serfDAV访问模块
1.5,any,any

工作拷贝和版本库格式更改
工作拷贝格式已经升级,这意味着1.4和更老的Subversion客户端不能与Subversion1.5的工作拷贝上工作,工作拷贝是自动升级的。类似的,版本库格式也已经改变,意味着直接访问库的1.4以及旧的版本的程序如svnserve,mod_dav_svn,svnadmin等不能读取Subversion1.5的版本库,但是版本库是不能自动升级的。

工作拷贝升级
警告:如果一个Subversion1.5客户端遇到了一个1.5以前的工作拷贝,它会在接触到工作拷贝时自动升级工作拷贝格式,并使旧的Subversion客户端不能再读这些工作拷贝了。如果你在机器上使用多个版本的Subversion,请确认你对工作拷贝是用的subversion版本,防止意外升级工作拷贝。(但是这种自动升级行为不会发生在版本库上,只发生在工作拷贝。)
如果你意外的将工作拷贝从1.4升级到1.5,并希望降级到1.4,可以使用change-svn-wc-format.py,详情看这篇文章,也可以以–help运行来查看使用指导。

版本库升级
Subversion1.5服务器可以与1.4和以前的版本库工作,如果不使用svnadminupgrade命令,版本库不会自动升级到1.5。这意味仅仅升级服务器不能直接得到某些特性,你也需要升级版本库。(我们决定不使用自动升级版本库是因为我们不希望subversion1.5偷偷的升级成1.4不可用的版本库。)

在运行svnadminupgrade之后,你或许希望对版本库运行svn-populate-node-origins-index程序。Subversion1.5为每个版本库维护了一个节点起源的索引,为了得到一些信息,偶尔构建这个索引。但是对于包含许多修订的老版本库,最好一次创建这个索引,使用前面说道的工具,而不会因为自己构建这个索引而影响查询的性能,更多细节见issue#3024。

命令行输出的变更
尽管我们希望尽可能让命令行程序的的输出与以前版本保持兼容,但是还是要添加一些信息,这会破坏一些精确依赖输出的脚本。不幸的是,我们不能列出1.5输出的所有改变,但有一条可以确定的是冲突标记的行结束符号会和文件的eol-style匹配。

SASL和svn://的兼容性
所有1.x的客户端,包含或不包含CyrusSASL支持的,都可以通过在CyrusSASL没有开启时认证正常。注意CRAM-MD5和ANONYMOUS机制是Subversion内置的,所以即使CyrusSASL插件不在,我们也可以使用。
没有CyrusSASL支持的1.x客户端不能通过开启CyrusSASL,允许CRAM-MD5和ANONYMOUS机制的1.5+的subversion服务器认证,包含CyrusSASL支持的1.5+客户端可以通过开启SASL功能的1.5+服务器认证,只要保证服务器支持的某个机制客户端也支持。

关于CyrusSASL的更多信息可以看这个部分。
自定义revprops现在需要通过pre-commit钩子的检验 Subversion每个修订版本都有一组关联的修订版本属性;除了标准的日志信息,作者和日志,可以设置任意的用户定义的属性。这些属性本身不是版本化的,所以不能恢复修改的内容。因此,如果我们没有设置pre-revprop-change,我们就不能修改提交修订版本的revprops。在Subversion1.5之前,我们只能在提交时提供这三个标准的revprops;管理员使用钩子来控制这三个标准修订版本属性的内容,需要在pre-commit和pre-revprop-change检查,但是对于自定义的属性,只有pre-revprop-change是相关的。

Subversion1.5添加了svncommit包含–with-revprop选项,允许用户在提交时为修订版本指定属性,因此在Subversion1.5允许在没有pre-revprop-change钩子时设置修订版本属性,pre-commit可以在提交之前检查事务修订版本属性(就像许多服务器已经使用pre-commit来检查正确格式化的log)。
这意味着如果你以前依赖pre-revprop-changeto钩子控制对于修订版本属性的修改(不仅仅你是跟踪它们的历史),那你先现在也需要在pre-commit添加类似的控制。
 

【编辑推荐】

  1. Subversion Pre-Commit-Hook Template未明安全漏洞
  2. 七步搞定Subversion服务器在Ubuntu下的配置 
  3. 三大主流Subversion客户端初探
  4. CentOS安装新版subversion
  5. 学习笔记:剖析Collabnet Subversion集成

网站名称:Subversion1.5已发布,新特性值得期待
分享链接:http://www.shufengxianlan.com/qtweb/news24/343274.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联