|
根据 Subversion 团队的乐观估计, 跳票了大半年的 1.7 版本很有可能在 2010 年上半年发布. 自从 SVN 被 Apache 招到麾下, 代码更新速度明显呈加速趋势.
1.7 相对 1.6 的变化相当大, 我比较关注的新特性包括: 新的 HTTPv2 协议, 期待已久的永久删除, 下一代工作副本 (WC-NG)
新的 HTTPv2 协议
如果你曾经对比过 svnserve 和 mod_svn 不同部署方式下的访问速度, 会明显感觉到基于 HTTP WebDAV 协议效率不佳 (比 svn:// 协议至少慢上 4 倍).
效率低下最主要的因素:
HTTP 是无状态协议, 一次完整 Subversion 请求会被 mod_svn 拆分成几十甚至上百次独立 HTTP 请求.
mod_svn 严格遵循 HTTP WebDAV 协议规范, 包括一些导致效率低下, 而很少能用上的功能. Subversion 为了支持所有 WebDAV 客户端能对 SVN 库进行操作而导致性能降低, 实在是得不偿失 (很少有人放着 SVN 客户端不用, 却用 Windows Xp 的 “Web 文件夹” 来操作 Subversion 库).
Subversion 分别提出了相应的解决方案:
异步多路复用的客户端 HTTP 库 serf 将取代 neon 库成为默认选项, 某些情况下, 提速能达到 4 倍.
新的 HTTPv2 协议, 专为性能和可读性打造, 放弃 “古老” / 复杂 / 低效的 DeltaV 标准.
期待已久的永久删除
1.7 之前的 Subversion 没有后悔药可以吃 — 一旦有成员上传了编译过程临时文件, 这些废料将伴随整个库的生存周期.
svn dump 过滤命令看似可以解决这个问题, 但实际上可操作性极差. 随着库的总大小增长, 永久删除文件的成本加速上升.
1.7 的 “Obliterate” 特性非常值得期待, 让某些误操作不再是整个团队的负担:
支持 永久删除 特定文件的指定修订版本
支持 永久删除 特定目录的指定修订版本
支持 永久删除 特定文件的所有修订版本 (即让这个文件彻底消失)
但是不支持永久删除 文件中的指定内容
下一代工作副本 (WC-NG)
这是 1.7 的重头戏, 这项特性意味着 SVN 在慢慢向 Git / Mercurial / Bazaar 等 DVCS 靠拢. WC-NG 是 离线提交 和其它 DVCS 特性的基础工作, 我们会在未来的 2.0 版本中, 看到这一功能的优势被放大.
用户可见的主要影响包括:
集中式的工作副本元数据 (1.6 及其以前版本, SVN 会在工作副本的每个目录下放置一个 .svn 文件夹存放元数据信息, 相当恶心)
使用 SQLite 存储元数据
解决文件名大小写的问题
就 1.7 版本而言, 还没有提供 离线提交 的功能. 离线提交 对开发人员的体验改善应该会相当明显, 期待 2.0 版本的到来. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|