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
Cyrus SASL 对 svn:// 仓库访问的支持任何版本*,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 FAQ 中关于工作副本格式更改的内容。

合并跟踪

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

注意:某些合并跟踪功能不能用于由 1.5.x 之前版本的服务器提供的仓库。

重复合并

在分支上工作时,Subversion 现在跟踪每个已合并的版本。这使得合并更改(例如,从主干合并更改)变得更容易,因为可以始终合并整个版本范围,而不会有两次合并同一版本的风险。Subversion 将在执行合并时自动忽略已合并的版本。

Log dialog showing already merged entries grayed out

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

记录手动合并

为了阻止合并某个版本,TortoiseSVN 在合并对话框中提供了一个名为“仅记录”的按钮。这将告诉 Subversion 该版本已被合并,而无需执行合并本身。

合并信息

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

Log dialog showing entries
    without merge history

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

Log dialog showing entries
    with merge history

稀疏检出

许多用户拥有非常大的树结构,他们只想检出某些部分。对于包含许多子文件夹的文件夹,可能不需要某些子文件夹。

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

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

检出的深度会被记住,以便稍后的更新将遵守该深度,而不会再次获取所有内容。

Cyrus SASL 对 svnserve 的支持

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

  • ANONYMOUS
  • CRAM-MD5
  • PLAIN
  • DIGEST-MD5
  • LOGIN
  • 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