TortoiseSVN Logo

TortoiseSVN 1.5 的新功能

详细信息如下所述。

TortoiseSVN 1.5 是所有先前 TortoiseSVN 版本的超集,被认为是当前稳定且“最佳”的版本。1.0.x、1.1.x、1.2.x、1.3.x 或 1.4.x 中的任何内容也都在 1.5 中,但 1.5 包含早期版本中没有的功能和错误修复。

兼容性问题

旧的客户端和服务器与 1.5 服务器和客户端透明地互操作。当然,除非客户端和服务器都是最新版本,否则某些 1.5 新功能可能不可用。请参阅下表了解哪些功能需要哪些版本

新功能最低客户端最低服务器最低存储库备注
合并跟踪1.51.51.5
svn:// 存储库访问的 Cyrus SASL 支持任何*, 1.5任何*, 1.5任何*受限,仅支持 ANONYMOUS 和 CRAM-MD5

所有其他功能独立于服务器版本,可以不受限制地使用。

有关更详细的兼容性表,请参阅 Subversion 发行说明

由于对工作副本库进行了一些改进,工作副本格式的版本号已递增。这意味着早于 1.5 的 Subversion 客户端无法使用 Subversion 1.5 生成的工作副本。同样,存储库格式也发生了变化,这意味着通常直接访问存储库的 1.5 之前的 Subversion 工具(例如 svnservemod_dav_svnsvnadmin)将无法读取最初由 Subversion 1.5 创建的存储库。

警告:如果 Subversion 1.5 客户端遇到 1.5 之前的版本,它将在自动接触到工作副本时升级工作副本格式,使其无法被旧的 Subversion 客户端读取。如果您在机器上使用多个版本的 Subversion,您需要小心在哪个工作副本中使用哪个版本,以避免意外升级工作副本格式。但是,此“自动升级”功能不会发生在新的存储库格式中。

请查看 Subversion 常见问题解答,了解有关 工作副本格式更改 的信息。

合并跟踪

Subversion 1.5.0 中的合并跟踪在功能上大致等同于 svnmerge.py,记录和使用合并历史记录以避免 重复合并 问题的常见情况,并允许挑选更改。它通过属性公开合并历史记录,并允许存储库转储/加载(包括重新创建合并历史记录索引的能力)。

注意:某些合并跟踪功能无法用于由 1.5.x 之前的服务器提供的存储库。

重复合并

在分支上工作时,Subversion 现在会跟踪每个被合并的修订版。这使得合并更改(例如,来自主干)变得更容易,因为可以始终合并整个修订版范围,而无需担心两次合并相同的修订版。Subversion 将在执行合并时自动省略已合并的修订版。

Log dialog showing already merged entries grayed out

在从合并对话框中显示日志以查找要合并的修订版时,TortoiseSVN 会将已合并的修订版以灰色显示,作为视觉提示。如果选择了灰色的修订版,Subversion 不会再次合并该修订版,因为它已经合并了。

记录手动合并

为了阻止修订版本被合并,TortoiseSVN 在合并对话框中提供了一个名为“仅记录”的按钮。这将告诉 Subversion 该修订版本已经合并,而不会实际执行合并操作。

合并信息

当使用日志对话框检查修订版本时,发生合并的修订版本的日志消息通常不太有用。大多数人以“合并修订版本 XXX 到 YYY 来自 /branches/ZZZ”或类似的形式编写日志消息。但真正有趣的是,在检查文件夹/文件的日志时,会显示所有已合并修订版本的日志消息。

Log dialog showing entries
    without merge history

如果您需要,TortoiseSVN 可以显示这些日志消息。日志对话框中有一个复选框,选中它将获取所有已合并修订版本的日志消息。已合并修订版本的日志条目会稍微缩进显示。

Log dialog showing entries
    with merge history

稀疏检出

许多用户拥有非常庞大的树,他们只希望检出其中一部分。对于包含许多子文件夹的文件夹,某些子文件夹可能不需要。

TortoiseSVN 为用户提供了一个组合框,用于选择检出的深度。

  • 完全递归
  • 直接子项,包括文件夹
  • 仅文件子项
  • 仅此项

检出深度会被记住,因此以后的更新操作会尊重该深度,不会再次获取所有内容。

svnserve 的 Cyrus SASL 支持

在 Subversion 1.5 中,svnserve 可以使用 SASL(简单身份验证和安全层)进行身份验证和数据加密。TortoiseSVN 也实现了 SASL。以下 SASL 身份验证方法可用于 TortoiseSVN 1.5

  • 匿名
  • CRAM-MD5
  • 明文
  • DIGEST-MD5
  • 登录
  • NTLM

SASL 还提供某些方法中的数据加密,因此您可以在数据通过互联网传输时保护数据安全。使用 SASL 保护连接应该比设置 SSH 基础设施更容易。

变更列表支持

有时您会在工作副本中同时处理多个不同的问题,这会使跟踪哪些文件涉及哪些更改变得困难。TortoiseSVN 现在允许您将文件分组到逻辑变更列表中。这些列表会出现在提交对话框和检查修改对话框中。除了提供视觉指示外,您还可以选择要提交的组。

Commit dialog showing changelists
    grouped together

TortoiseSVN 还提供了一个名为“ignore-on-commit”的特殊变更列表。属于该变更列表的文件在提交对话框中不会被选中。这在您需要保留版本控制但不想提交其修改的文件时很有用。

日志缓存

从仓库获取日志信息可能需要很长时间,特别是对于包含数千个修订版本的仓库或仓库不在快速连接上的情况。

TortoiseSVN 1.5 可以将日志条目缓存到本地驱动器。只有本地缓存中还没有的条目才会从仓库获取。

日志缓存不仅提高了日志对话框的性能,还提高了修订版本图的性能。

存储库浏览器

仓库浏览器已完全重写,现在更像 Windows 资源管理器。它有两个窗格,左侧是树视图,右侧是文件/文件夹列表。

Repository Browser

重写的一部分还包括在显示非常大的目录时的性能改进。

还可以将文件/文件夹从仓库浏览器直接拖放到资源管理器中,作为保存/导出这些文件/文件夹的快速方法。

修订版本图

自上一个版本以来,修订版本图发生了巨大变化。除了使用日志缓存(如果可用)之外,它在分析日志数据时也快得多。

图的右上角有一个小窗口,显示整个图的概述。

新的修订版本图有更多选项可以调整输出。例如,图的方向、节点在图中的排列方式或应完全过滤掉的节点/路径/URL。

客户端挂钩脚本

TortoiseSVN 允许在某些操作之前和之后执行客户端脚本。可用的挂钩是

开始提交挂钩
在显示提交对话框之前调用
提交前挂钩
在显示提交对话框后但实际提交之前调用
提交后挂钩
在提交完成后调用
开始更新挂钩
在更新之前,在联系仓库之前调用
更新前挂钩
在更新之前调用,但在更新所针对的修订版本已知之后调用
更新后钩子
在更新完成后调用

TortoiseMerge

行尾
不一致的行尾将被正确处理,包括 MAC 行尾
撤销
在冲突解决期间进行的更改可以逐个撤销
编辑
目标文件可以直接在 TortoiseMerge 中编辑,无需使用文本编辑器

SubWCRev

SubWCRev 工具现在有一个 COM 接口,可以方便地从脚本语言访问。这使得将修订信息嵌入到例如 Microsoft Word 文档中成为可能。

覆盖图标

如果您使用其他 Tortoise 客户端,例如 TortoiseCVS,您可能知道 Windows 中有限的覆盖插槽问题。安装了 TortoiseSVN 和 TortoiseCVS 后,一些覆盖将不再显示。这是因为 Windows 只有大约 12 个覆盖插槽可用,而安装了这两个应用程序后,该限制就会用尽。

为了解决这个问题,我们为所有 Tortoise 客户端实现了一个通用的覆盖处理程序。使用此处理程序,所有 Tortoise 客户端将显示相同的覆盖图标并使用相同的覆盖插槽。这样,我们就不容易再遇到 Windows 限制。

TortoiseSVN 1.5.x 和 TortoiseCVS 不稳定版本已经使用此新的覆盖处理程序。

由于这种新的共享覆盖的覆盖处理程序,TortoiseSVN 获得了两个新的覆盖:对于未版本控制和忽略的文件,现在也有一个覆盖。

Icon Overlays