Subversion 1.3发布说明 输出PDF 打印 E-mail
用户评分: / 0
好 
作者: admin   
2006-09-11
  • 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_dir 和 svn_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修正发布,除非是特别严重的问题。

    发表评论 (0 网友评论)
    最近更新 ( 2006-10-24 )
    < 上一篇   下一篇 >