提问的智慧SVN版 - 提问者必读
返回列表 回复 发帖

Subversion 1.4中文 Release Notes


本文由liuheqi(at)gmail.com翻译,iusesvn.com首发。转载请注明出处。

Subversion 1.4有哪些新东西

  • svnsync,一个新的版本库镜像工具
  • 改进大的工作复本的性能
  • 支持BerkeleyDB 4.4及其“自动恢复”功能
  • 改进binary delta 算法的大小
  • 一些新的命令开关参数
  • 许多改进了的APIs
  • 新修正了多于40个的BUG

以下是详细说明。

    Subversion 1.4 是之前发布版本的超集,被认为是当前“最好的”发布版本。在1.0.x, 1.1.x, 1.2.x或1.3.x中有的东西在1.4都有,但1.4包括了之前版本所不具备的功能和问题修正。新功能的文档将最终体现在1.4版的Subversion book中,请访问svnbook.red-bean.com。

兼容性关系
    旧的客户端与服务器与1.4版本服务器和客户端可以透明地进行交叉操作。当然1.4中一些新的功能在只有在最新版的客户端和服务器上可用。不需要导出和重新加载你的版本库;Subversion 1.4可以读取旧版所建立的版本库。要升级一个已有的安装,只要在旧的上面安装最新的库(libraries)和二进制就可以了。
    Subversion 1.4维持了API/ABI与之前版本的兼容性,仅增加了新的函数。为1.0, 1.1, 1.2或1.3 API写的程序可以在1.4的库(libraries)上使用。但是为1.4写的程序可能无法在旧的库上使用。

工作复本与版本库格式的改变
    由于对工作复本库的改进和问题修正,工作复本的版本号格式发生了变化。它意味着Subversion 1.4之前的客户端不能够与由Subversion 1.4生成的工作复本协同工作了。同样,版本库的格式也改变了,之前的通常直接访问版本库Subversion的工具(如:svnserve, mod_dav_svn, svnadmin) 无法读取由Subversion 1.4建立的版本库。
    警告: 如果一个Subversion 1.4客户端遇到一个1.4之前的工作复本,它就会立刻自动地将该工作复本格式进行升级,这使得旧的Subversion客户端无法对其进行读取。如果你使用多个Subversion的版本,你就要小心了。这个“自动升级”的功能不会对新的版本库格式起作用。

命令行输入的改变
    尽管Subversion开发者试图保持命令行的输出在版本之前尽量一致,新的信息在有些时候还是要被加入。这就可能使那些精确依赖程序输出的脚本不能正常工作。在1.4中,对输出作了以下的修改:
•        文件中的冲突标记现在匹配文件所定义的eol(行结束符)样式。

新功能
svnsync (某些功能需要有1.4服务器)
    一个新的工具——svnsync——已经包含进标准发布版中了。这个工具提供了从一个版本库复制历史到另一个版本库的功能。复制可以一次进行可以可通过重复‘sync’操作来递增。由于这个工具使用了抽象网络(RA) API,源和目标版本库可以都是本地的、远程的,或是两者的任意的组合。
    兼容性要点: 为了将信息"推"入远程的版本库,任何一个版本的服务器都可以。要从源版本库中“拉”出历史,需要1.4 (或是之后的)服务器。
    这个工作的用法很快就会在Subversion book中介绍,但现在运行svnsync 帮助应该就足够了,它的子命令不多,帮助系统全部都进行了介绍。

工作复本的性能改进(客户端)
    Subversion客户端管理你的工作复本的方法经历了根本性的变革。.svn/entries文件不再是XML了,客户端在管理和存储属性元数据(property metadata)时更聪明了。
    因此,性能有了本质的提升。新的工作复本格式允许客户端更快的搜索工作复本,检查文件变动、管理属性元数据(property metadata)、对付大文件。总体的磁盘访问也更小,占用更少的inode。另外,一系列长期存在的与合并和复制有关的BUG都修复了。
    警告: Subversion 1.4客户端将升级旧的工作复本而不给出任何警告,使得它们对旧版本的客户端不可读。请参见上面的“工作复本与版本库格式的改变”一节。

BerkeleyDB 4.4与自动恢复(服务器)
    Subversion之前版本的一个常见的问题是在服务器进程崩溃的时候,会将基于BerkeleyDB的版本库置于一个不可用的“插入”(wedged)状态,这需要管理员手动干预恢复。(注意:这不是由于BerkeleyDB的BUG,而是由于Subversion对它的非正常使用!)
    Subversion1.4现在可以在BerkelayDB4.4下编译了,具有一个新的“自动恢复”的功能。如果一个Subersion服务器进程崩溃并将库置于不一致的状态,下一个试图访问版本库的进程会自动发现这个问题并获取对版本库的独占控制权,然后恢复它。在理论上(并且在我们的测试中),这个新的功能让基于BerkeleyDB的库与FSFS库那样进行插入校验。
    警告: 当升级至一个新版 的BerkeleyDB时不会要求你导出和重新加载你的版本库,你将需要根据BerkeleyDB升级的体制确保你的版本库可以被新版本的库(libraries)访问。请参考以下链接,获得升级BerkeleyDB环境的帮助:
http://sleepycat.com/docs/ref/upgrade/process.html

二进制Delta编码改进(服务器与客户端)
    Subversion使用了xdelta算法来计算字节字符串的不同。这个算法的输出保存成一个程序svndiff的自定格式。Svndiff就是存储在版本库中用于表示不同版本文件之间的差别的数据,并且,svndiff数据也用于在服务器与客户端之间传输。
    在Subverion1.4中,svndiff格式进行了改进,占用更小的磁盘空间——对于明文来说,有时大约能节省50%。因此,如果你选择导出并重新加载你的版本库,新的库会明显的变小。(确保使用svnadmin1.4来建立新版本库)。另外,如果一个客户端与服务器都是版本1.4,网络的流量也会变小变快。
    警告:由svnadmin1.4建立的版本库无法被早期的Subversion库(libraries)或工具读取。但是为了要体验这种更小的数据格式,你将必须导出并重新加载你的数据。如果你不使用svnadmin1.4重建你的版本库,你将继续使用旧的、更大的格式,它们也可以由旧的Subvertion工具来读取。

新的子命令开关
    这个版本的Subversion为命令行客户端添加了一些新的开关和选项。它们是:
  1. svn blame --force
  2. 即使文件是二进制的,也将显示修订

  3. svn merge/blame -x
  4. 合并和修订命令现在可以传递选项到外部的diff3程序

  5. svn diff/merge -c/--change
  6. 你现在可以简单地写一个-c N来查看或合并一个版本,而不是麻烦的-r N-1:N

  7. svn diff --summarize
  8. 只打印已修改文件的目录,以'svn status'的输出格式。鉴于'svn status'只能得到你本地工作拷贝的修改,这个命令使得你可以直接从库中得到已修改文件的概要。

  9. svn diff -x [-u | -b | -w | --ignore-eol-style]
  10. Subversion内置的比较引擎现在可以在计算差异时忽略空白字符以及行结束符
复制代码
改进与问题修复
Svnserve作为Windows服务(服务器)
    svnserve 服务器现在可以作为Windows服务运行了。这允许svnserve在系统启动的时候自启动,不需要用户登录也不需要外部的服务“包装程序”。参见http://svn.collab.net/repos/svn/ ... windows-service.txt 其中介绍了如何让svnserve成为Windows服务
OS X Keychain支持(客户端)
    在OS X上,svn客户端现在将passwords缓存至Keychain中而不是~/.subversion/auth/.

API改进 (客户端与服务器)
    如果你使用Subversion API开发了一个第三方客户应用,你需要注意一些新的API:
•        RA重放(reply) API,由svnsync使用,允许你一次操作就获得与一个版本(revisions)集合相关的数据。
•        许多API已经被修订成新的版本。

其他问题修复 (客户端与服务器)
    迄今为止没有公布的问题修复,总数超过40处。请参考 CHANGES 文件获得详细信息。

Subversion 1.2.x 系列不再被支持
    Subversion 1.2.x产品线不再被支持了。这不意味着你安装的1.2不能用了。如果它能够很好的工作,而且你也就需要它的那些功能,就不用担心。“不再被支持”只是意味着不再接受BUG报告,不再推出BUG修正, 除非有极度危险的安全或数据丢失的BUG。


[ 本帖最后由 thought 于 2006-9-12 14:30 编辑 ]

赞一个

英文原文,可以对照来学英语,呵呵

Subversion 1.4 Release Notes



What's New in Subversion 1.4
svnsync, a new repository mirroring tool
Huge working-copy performance improvements
Support for BerkeleyDB 4.4 and its "auto recovery" feature
Size improvements to the binary delta algorithm
A handful of new command switches
Many improved APIs
More than 40 new bugfixes
Details are described below.

Subversion 1.4 is a superset of all previous Subversion releases, and is considered the current "best" release. Anything in 1.0.x, 1.1.x, 1.2.x or 1.3.x is also in 1.4, but 1.4 contains features and bugfixes not present in any earlier release. The new features will eventually be documented in a 1.4 version of the free Subversion book, see svnbook.red-bean.com.

Compatibility Concerns
Older clients and servers interoperate transparently with 1.4 servers and clients. Of course, some of the new 1.4 features may not be available unless both client and server are the latest version. There is no need to dump and reload your repositories; Subversion 1.4 can read repositories created by earlier versions. To upgrade an existing installation, just install the newest libraries and binaries on top of the older ones.

Subversion 1.4 maintains API/ABI compatibility with earlier releases, by only adding new functions. A program written to the 1.0, 1.1, 1.2 or 1.3 API can both compile and run using 1.4 libraries. However, a program written for 1.4 cannot necessarily compile or run against older libraries.

Working Copy and Repository Format Changes
Due to certain improvements and bugfixes made to the working copy library, the version number of the working copy format has been incremented. This means that Subversion clients earlier than 1.4 will not be able to work with working copies produced by Subversion 1.4. Similarly, the repository format has changed as well, meaning that pre-1.4 Subversion tools that normally access a repository directly (e.g. svnserve, mod_dav_svn, svnadmin) won't be able to read a repository originally created by Subversion 1.4.

WARNING: if a Subversion 1.4 client encounters a pre-1.4 working copy, it will automatically upgrade the working copy format as soon as it touches it, making it unreadable by older Subversion clients. If you are using several versions of Subversion on your machine, you need to be careful about which version you use in which working copy, to avoid accidentally upgrading the working copy format. This "auto upgrade" feature, however, does not occur with the new repository format.

Command Line Output Changes
Although the Subversion developers try hard to keep output from the command line programs compatible between releases, new information sometimes has to be added. This might break scripts that rely on the exact format of the output. In 1.4, the following changes have been made to the output:

Conflict markers in files now match the file's defined eol-style.

New Features
svnsync (some features require a 1.4 server)
A new tool — svnsync — is now installed as part of the standard distribution. This tool provides the ability to replicate history from one repository to another. The replication can happen all at once, or can be done incrementally through repeated 'sync' operations. Because the tool uses the abstract network (RA) API, the source and destination repositories can be either local, remote, or any combination thereof.

Compatibility note: in order to "push" information into a destination repository, any version of the server will suffice. The pushing is done through ordinary network commits. To "pull" history from the source repository, however, requires a 1.4 (or later) server.

Usage of this tool will be documented in the Subversion book soon, but for now, running svnsync help should suffice; the number of subcommands is very small, and the help system documents them all.

Working copy performance improvements (client)
The way in which the Subversion client manages your working copy has undergone radical changes. The .svn/entries file is no longer XML, and the client has become smarter about the way it manages and stores property metadata.

As a result, there are substantial performance improvements. The new working copy format allows the client to more quickly search a working copy, detect file modifications, manage property metadata, and deal with large files. The overall disk footprint is smaller as well, with fewer inodes being used. Additionally, a number of long standing bugs related to merging and copying have been fixed.

WARNING: A Subversion 1.4 client will upgrade older working copies to the new format WITHOUT WARNING, rendering them unreadable by older Subersion clients. See the section above, titled 'Working Copy Format Changes'.

BerkeleyDB 4.4 and auto-recovery (server)
A common problem with previous versions of Subversion is that crashed server processes could leave BerkeleyDB-based repositories in an unusable "wedged" state, requiring administrators to manually intervene and bring back online. (Note: this is not due to bugs in BerkeleyDB, but due to the unorthodox way in which Subversion uses it!)

Subversion 1.4 can now be compiled against BerkeleyDB 4.4, which has a new "auto-recovery" feature. If a Subversion server process crashes and leaves the repository in an inconsistent state, the next process which attempts to access the repository will notice the problem, grab exclusive control of the repository, and automatically recover it. In theory (and in our testing), this new feature makes BerkeleyDB-based repositories just as wedge-proof as FSFS repositories.

WARNING: While upgrading to a new version of Berkeley DB will not require you to dump and reload your repository, you will still need to follow the Berkeley DB upgrade regimen to ensure that your repository is accessible by the new version of those libraries. Please see http://sleepycat.com/docs/ref/upgrade/process.html for instructions on upgrading Berkeley DB environments.

Binary Delta Encoding Improvements (client and server)
Subversion uses the xdelta algorithm to compute differences between strings of bytes. The output of this algorithm is stored in a custom format called 'svndiff'. svndiff data is what's stored in the repository to represent the difference between successive versions of files, and svndiff data is also transmitted over the wire between client and server (e.g. during updates and commits.)

In Subversion 1.4, the svndiff format has been improved to use much less disk space — up to 50% less on plain text files in some cases. Thus, if you choose to dump and reload your repository, the new repository should be noticeably smaller on disk. (Make sure to svnadmin create the new repository using svnadmin 1.4.) Additionally, if a client and server are both version 1.4 , then network traffic becomes smaller and faster.

WARNING: A repository created by svnadmin 1.4 will not be readable by earlier Subversion libraries or tools. However, in order to experience the smaller data format, you'll have to dump and reload your data. If you don't recreate your repository with svnadmin 1.4, it will continue writing data in the older, larger format, and will still be readable by older Subversion tools.

New subcommand switchesThis release of Subversion adds a few new switches and options to the command line client. These are:
svn blame --force
Displays the output of blame, even if the file is binary.
svn merge/blame -x
Merge and blame commands can now pass options to an external diff3 program.
svn diff/merge -c/--change
You can now simply write -c N to view or merge a single revision, instead of the cumbersome -r N-1:N.
svn diff --summarize
Prints only the list of changed files, in the output format of 'svn status'. This lets you retrieve summaries of changes directly from a repository, whereas 'svn status' operates only on the local changes of your working copy.
svn diff -x [-u | -b | -w | --ignore-eol-style]
The diff engine internal to Subversion can now ignore whitespace and eol-style when computing the diff.
Enhancements and Bugfixes
svnserve as native Windows service (server)The svnserve server can now be run as a Windows service. This allows svnserve to start automatically, at system boot time, without having a user logged in and without the need for an external service 'wrapper' program. See notes/windows-service.txt for information on setting up svnserve as a Windows service.
OS X Keychain support (client)On OS X, the svn client now caches passwords in Keychain, rather than in ~/.subversion/auth/.
API improvements (client and server)
If you develop a 3rd-party client application that uses Subversion APIs, you may want to take notice of some new APIs:

The RA replay API, used by svnsync, lets you retrieve all the data associated with a set of revisions in a single operation.
Many APIs have been revised to newer versions.
Other bugfixes (client and server)
The usual slew of heretofore-unreleased bugfixes, more than 40 overall. See the CHANGES file for full details.

Subversion 1.2.x series no longer supported
The Subversion 1.2.x line is no longer supported. This doesn't mean that your 1.2 installation is doomed; if it works well and is all you need, that's fine. "No longer supported" just means we've stopped accepting bug reports against 1.2.x versions, and will not make any more 1.2.x bugfix releases, except perhaps for absolutely critical security or data-loss bugs.
好东西!顶顶顶顶顶顶顶顶顶顶顶顶顶顶
1.4的安装和以前有没有什么不一样?是不是还要安装什么其他的运行环境?
原帖由 snowvan 于 2006-9-13 09:03 发表
1.4的安装和以前有没有什么不一样?是不是还要安装什么其他的运行环境?
对于安装来说,只有一点不同:svnserve.exe不能再用SVNService.exe这类的wrap软件打包成WindowsServices了,必须采用其他手段。因为它现在已经具备了“完备的Windows Services特性”,只是缺少一个装载手段而已。
http://zhengxinxing.googlepages.com/home
但是我从http://subversion.tigris.org/downloads/svn-win32-1.4.0.zip 下载了文件并覆盖了原来的目录但是提示版本仍然是1.3.2这是怎么回事?

回复 #6 snowvan 的帖子

subversion的版本是记录在注册表中的,你只是覆盖,而不是重新安装,
所以注册表还是保留原来的版本
原帖由 <i>PCplayer</i> 于 2006-9-18 22:17 发表<br />
subversion的版本是记录在注册表中的,你只是覆盖,而不是重新安装,<br />
所以注册表还是保留原来的版本
<br />
你说的是TSVN吧?如果是snowvan下载的那个版本的话,是命令行方式使用的,可能不太一样
我将1.3.2和1.4.0两个版本的bin目录都放在不同路径下,直接用命令行方式,运行指定的 svn help,就可以看到不同的版本号
http://zhengxinxing.googlepages.com/home
sc create svnserve displayname="Subversion Repository" binpath="\"D:\Program Files\Subversion\bin\svnserve.exe\" --service -r e:\reporitory"

大家看看这个有什么错?为什么建不了服务?

原来如此

注释
如果参数及其值之间没有空格,(例如,是 type= own, 而不是 type=own),则操作会失败。

还有这么怪的事,真是没理由。为什么非要加一个空格呢,害我花了那么多的时间
原帖由 vollin 于 2006-9-19 17:27 发表
注释
如果参数及其值之间没有空格,(例如,是 type= own, 而不是 type=own),则操作会失败。

还有这么怪的事,真是没理由。为什么非要加一个空格呢,害我花了那么多的时间
微软的人比较菜
返回列表
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件