新闻快讯
《使用Subversion进行版本控制》的1.1版发布了,大家可以在线浏览或者下载PDF版本。


Subversion 1.3发布说明 打印 E-mail
用户评分: / 14
好 
作者: Rock Sun   
2006-01-10

Subversion 1.3的新东西

  • svnserve路径为基础的授权
  • mod_dav_svn改进的日志和版本库列表
  • 改进了python和ruby的语言绑定
  • 新的命令行参数
  • 客户端和服务器效率改进
  • 改进的API
  • 30多个新的bug修正

详细描述如下。.

Subversion 1.3是Subversion以前版本的超集,以前的 1.0.x, 1.1.x或1.2.x的特性和更新的Bug修正,1.3的新特性将会写到《使用Subversion进行版本控制》中,见 svnbook.red-bean.com

下载

Subversion 1.3的源代码可以下面三种格式下载:

对于二进制包,可以参见二进制包列表,注意二进制包通常在源文件发布之后一周发出,包的维护者是志愿者,所以不要催促他们—他们知道什么时候发出一个新的源版本,他们努力的尽快发布最新的二进制版本。

关于其他的Subversion发布,可以看这个文件夹

兼容性问题

老的客户端和服务器可以透明的同1.3的服务器和客户端交互,当然如果服务器和客户端不是最新的1.3版本,许多新特性无法使用,不需要升级版本 库,Subversion1.3可以读取以前的版本,为了升级,只需要用最新的二进制文件覆盖原来的版本。(警告:如果你使用Berkeley DB版本库,安装新的Subversion二进制版本会强行升级Berkeley DB,见下面意料之外的Berkeley DB升级)。

Subversion 1.3维护了对过去版本的API/ABI兼容性,只增加新的功能,一个用1.0, 1.1或1.2 API 编写的程序,也可以在1.3下编译,然而,一个1.3下的程序可能不能针对老的库编译。

命令行输出修改

尽管Subversion开发者尽可能保持命令行输出在不同版本的兼容性,新的信息还是要添加进来,这会破坏依赖于准确格式的脚本程序,在1.3,输出已经有了如下的修改。

  • 'svnlook  diff'一直去比较添加的文件,增加了新的'--diff-copy-from'选项,导致比较会针对拷贝来自的地方,而不是针对空的文件(为了保持 'svn diff'的一致性)。另外,当和空文件比较的时候,diff的头现在会说"revision 0"而不是拷贝来自的修订 版本(为了保持'svn diff'的一致性)。

  • 'svn diff'输出使用本地编码,而不是UTF8了。

  • 合并冲突标记现在使用用户的本地编码。(不再是精确的命令行输出修改,但一般足够了)。
  • 'svn ls --verbose'现在显示远程的锁定为'O',就像'svn status -u'。

意料之外的Berkeley DB升级

这与Subversion 1.3版本无关,但如果你使用包分发版本升级这会影响你升级到1.3。

许多操作系统现在会安装有Berkeley DB 4.3,有些系统会无意中作为OS的包分发系统升级到4.3 — 例如,升级一个人的Subversion包。如果这件事发生了,你需要将现存的BerkeleyDB为基础的版本库升级到4.3

自从Subversion 1.2,来自Branko Čibej的Subversion的Windows二进制分发版本使用 Berkeley DB 4.3,如果你升级自老的版本,以上的方法会对你有用。

新特性

svnserve路径为基础的授权 (需要新的服务器)

svnserve,独立的Subversion服务器现在可以使用mod_authz_svn相同的首选策略文件。(在以前,只能使用pre-commit钩子脚本来实现写访问控制。)

授权文件格式的描述在这里,在Subversion的第6章。你只需要在版本库的svnserve.conf文件里使用新的authz-db指示指出。
[general]
password-db = userfile
realm = my realm

anon-access = none
auth-access = write

authz-db = authzfile

注意,当authz-db指示被使用,"blanket"访问指示(anon-access和auth-access)依然有效,为了访问一个路径,"blanket"指示和每路经的authz必须都允许访问。

mod_dav_svn的运行日志(需要新的服务器)

Apache HTTPD为基础的服务器(mod_dav_svn)现在可以记录高级的Subversion操作,例如"update", "lock", "commit"等等,这是对在accesslog记录神秘的WebDAV方法的改进。

为了激活这个功能,你需要利用httpd 2.0内置的日志指示,例如LogFormat and CustomLog指示,这个指示允许你灵活的定义你自己的日志格式,你只需要知道mod_dav_svn会在它认为http请求完成了特定的subversion相关操作之后设置一个SVN-ACTION环境变量,所以例如,下面的httpd.conf指示会纪录subversion相关的操作到一个私有日志文件,伴随着时间戳和用户名:

CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION

等效的功能计划添加到独立服务器svnserve,但是在Subversion1.4之后,因为实现策略有一点困难,细节见Issue #2409

语言绑定改进


  • 现在可以在没有安装SWIG的情况下编译SWIG绑定,因为我们现在把SWIG的输出绑定到了发布tarball中了。
  • Python和Ruby绑定现在支持自动内存分配了,如果你不使用Subversion提供的内存池API功能,Subversion会自动地管理自己的内存。
  • Python和Ruby绑定更佳的稳定,经过我们扩展的测试套件验证。
  • Ruby绑定提供了对Subversion API完全的覆盖。

新的子命令和选项


svn blame --xml [--incremental]
svn status --xml [--incremental]
svn info --xml [--incremental]
使用XML显示输出,如果也使用了--incremental,输出的XML适合连接。

svn add --no-ignore
svn import --no-ignore
忽略所有的"ignored"文件模式。

svnlook tree --full-paths
Show full paths instead of indented ones.

svnlook diff --diff-copy-from
打印与拷贝源代码的区别。

svnlook changed --copy-info
显示拷贝的细节。

改进和Bug修正

列出mod_dav_svn(服务器)存在的版本库

Apache HTTPD基础的服务器现在可以在显示(web服务器)由SVNParentPath指示暴露的版本库,只需要设置httpd.conf的SVNListParentPath指示。

可中断的http(s)://连接(客户端)

如果你在Neon 0.25.1或更高之上编译了Subversion,Subversion可以在http://和http://时中断,这是一个长时间的bug,现在终于被修复了。

对Windows下的'_svn'目录的官方支持 (客户端和语言绑定)

"_svn"的使用现在被官方的支持:因为一些版本的ASP.NET不允许点开头的目录(例如".svn",标准的Subversion工作拷贝管理目录),svn命令客户端和svnversion现 在可以使用SVN_ASP_DOT_NET_HACK环境变量,如果设置了这个值,他们会使用"_svn"而不是".svn"。我们推荐所有的 Subversion的Windows客户端利用这个特性,注意如果设置了这个环境变量,使用标准".svn"的工作拷贝将不会工作,需要重新检出 "_svn"的工作拷贝。

第三方的使用Subversion库的软件需要更新来得到等价的API条哟个,见三个新的API: svn_wc_is_adm_dir, svn_wc_get_adm_dirsvn_wc_set_adm_dir,设置SVN_ASP_DOT_NET_HACK环境变量只会在上面提到的客户端程序中工作,而且只有在Windows下。对于库并不工作;库用户需要调用新的API,平台独立的。见这个邮件和它的回复。

性能改进(客户端和服务器)

svn status更快了,就像其他追踪历史的命令,例如svn log。细节见issue #1970

需要特别注意的是当svn blame运行在一个有大量历史的文件上,或者是任何在一个"peg"修订版本上时。

API改进(客户端和服务器)

如果你开发了使用Subversion的API第三方客户端,且希望关注一些新的API:

  • 'status --show-updates'使用的API现在会显示URI, youngest revision, date last modified, youngest node kind和most recent author,并且包括了工作拷贝反映的状态。
  • 现在对于ra_dav有一个data-transfer过程回调。
  • 版本库的根URL现在保存在.svn/entries一个单独的字段里。
  • 许多API在心版本里经过了修订

其他bug修正(客户端和服务器)

到现在修正的bug可以查看CHANGES文件。

工作拷贝格式的修改

Subversion 1.3修改了保存在工作拷贝的属性的保存方式,显著的减少了工作拷贝文件的大小,从用户的角度,这个修改完全的透明,也就是你的工作拷贝可以继续工作,即使是用旧的客户端。

然而,使用非官方API与工作拷贝属性文件工作的程序会出现麻烦,JavaSVN是唯一陷入这个问题的的项目,他们也得到这样的提示。如果你是这样的开发软件,只需要借助Subversion的API,就可以轻易的绕过解析问题,Subversion版本库的细节见revision 16855

Subversion 1.1.x系列不再支持


Subversion 1.1.x 不再支持,这不意味着你的1.1安装已经完结了;如果他工作的很正常,那很好。“不再支持”仅仅意味着我们不再接受1.1.x的bug报告,不会有更多的1.1.x的bug修正发布,除尾市特别严重的问题。

最近更新 ( 2006-01-10 )
Copyright 2000 - 2005 Miro International Pty Ltd. All rights reserved.
Mambo is Free Software released under the GNU/GPL License.
Mambo中国 开放、共享、互助的中文Mambo社区