TortoiseSVN 1.2 的新功能
- 可选锁定(“保留检出”)
- 全新且大大改进的覆盖层缓存
- 与 TortoiseCVS 共存时更好地使用覆盖层
- 许多改进的对话框
- 许多错误修复
- 实现了所有新的 Subversion 1.2 功能
- 链接到 SVN 1.2
兼容性问题
TortoiseSVN 1.2 兼容 1.0 和 1.1 服务器。当然,除非服务器升级到最新版本,否则某些 1.2 的新功能可能不可用。
如果您使用 file:// 访问来访问 BDB 仓库,您需要将该仓库更新为 BDB 4.3 格式。有关如何执行此操作的说明可以在 Subversion FAQ 页面上找到。
Subversion 1.2 引入了一种替代的历史记录存储机制,称为 xdelta 差异。从以新格式存储的仓库中重建旧数据要快得多,从而显着加快了 blame、checkout、diff 和 merge 等操作的速度。虽然不需要转换仓库,但您可能希望这样做以获得更快的访问速度。为此,您需要使用命令行 svnadmin 工具执行 dump/load 循环。请查看 Subversion 手册,了解有关如何执行此操作的说明。
Windows 98/Me 和 Windows NT 4.0 操作系统在 TortoiseSVN 1.2 中不再受支持。这并不是因为我们想不友好,而是因为这些旧版本的操作系统中存在太多不兼容性,我们需要解决这些问题,而且由于没有开发人员使用这些系统,因此无法正确地进行测试和调试。如果您想在这些系统上使用 TortoiseSVN,则应使用 1.1.x 系列,该系列仍然可以从我们的下载页面获得。
新功能
文件锁定(也需要更新的服务器)
“锁定”是一项长期请求的功能,在其他系统中通常称为“保留检出”。虽然 Subversion 仍然主要是一个 复制-修改-合并 系统,专注于并行开发,但人们普遍承认并非所有文件都易于合并,特别是二进制文件,例如艺术作品、压缩文件、专有二进制格式或任何其他非基于行的数据。
新的锁定功能的目标是双重的。首先,提供一种强制对文件进行序列化写入访问的方法。其次,提供一种通信机制,以防止用户在不可合并的更改上浪费时间。
第一个目标是通过使用文件锁来实现的。 TortoiseSVN 具有新的上下文菜单项“获取锁
”和“释放锁
”。当用户锁定文件时,其他用户不得提交对文件的更改或从仓库中删除该文件。
锁也可以被盗或被破坏,例如,如果锁定文件的人去度假并忘记解锁。系统管理员可以使用新的锁定钩子来设置自己的锁定策略。有关仓库管理的详细信息,请参阅 Subversion 文档。
第二个目标 - 防止用户在不可合并的更改上浪费时间 - 是通过一个新的属性 svn:needs-lock
实现的。 鼓励用户(或管理员)在任何不可合并的文件上设置此属性。 存在时,此属性会导致文件变为只读,除非工作副本持有该文件的锁定令牌,在这种情况下,该文件是可读写的。 TortoiseSVN 使用新的状态覆盖层来指示文件何时处于只读状态,这会警告您需要在编辑之前获取锁。
警告:如果您的团队中的所有用户都通过 file://
访问仓库,则所有用户都必须使用 1.2 客户端。 1.2 之前的客户端会不知不觉地忽略锁。
新的外部状态缓存
TortoiseSVN 一直具有递归覆盖层功能,其中较低级别文件夹中的覆盖层更改会向上传播到文件夹层次结构中,这样您就不会忘记您在树的深处所做的更改。但是,在以前的版本中,由于获取状态信息的延迟,此功能仅适用于非常小的工作副本。
在 1.2 版本中,使用新的 TSVNCache
程序来维护您的工作副本状态的缓存,从而可以更快地访问此信息。这不仅可以防止资源管理器在获取状态时被阻止,而且还使递归覆盖层变得可行。
注意:资源管理器在使用新缓存时响应速度更快,因为它会在完整信息可用之前显示页面,并根据需要刷新。这意味着您立即看到的状态可能不是递归状态,而是非递归状态。根据您的工作副本的大小,递归状态可能需要一两秒钟才能过滤出来。
如果文件上的时间戳更改但内容没有更改,Subversion 总是会遇到速度问题。 这迫使 subversion 对文件与 BASE 进行逐字节比较,以检查它是否真的已更改。 在这个新版本中,您可以使用“清理
”菜单项修复此类时间戳不匹配问题。 如果您的 WC 检查速度变慢,请尝试执行清理。
更好地使用覆盖层
Windows 仅支持 15 个图标覆盖层,并且自身使用了其中的 3 个。 如果同时安装了 TortoiseSVN 和 TortoiseCVS,则根本没有足够的覆盖层用于这两个应用程序。
在此版本中,TortoiseSVN 检查其他应用程序需要多少覆盖层,并且如果覆盖层不足,则仅安装必要的覆盖层。 如果首选的覆盖层不可用,它还会显示备用覆盖层。 例如,如果“已添加
”覆盖层不可用,则将改为使用“已修改
”覆盖层。
增强功能和错误修复
这是一个主要的新版本,几乎所有主要对话框都以某种方式得到了改进,无论是添加新功能还是使其更易于使用。 下面提到了一些主要的改进,并且还有许多小的错误修复。 要查看完整的更改列表,请查看 ChangeLog
合并对话框
这已进行了重大更改,以使难以理解和使用的合并主题更易于理解和使用。 现在,您可以使用修订日志对话框选择要合并的修订,而无需尝试找出要插入修订框中的正确数字。
日志对话框
新的过滤器允许您在日志消息中搜索,或限制为日期范围。
新的 Subversion 1.2 API 允许您获取给定数量的日志消息,而不是给定数量的仓库修订的日志消息。 这使得显示有用的消息数量以及根据需要获取更多消息变得更加容易。
注意 - 此功能最适用于 Subversion 1.2 服务器。 它适用于早期版本的服务器,但速度会很慢。 服务器不理解新参数并返回所有日志消息,然后 Subversion 客户端会对其进行过滤。 这导致响应非常缓慢。 TortoiseSVN 有一个设置,允许您在使用旧服务器时使用旧的 API。
您现在可以比较文件夹的两个修订版本。 TortoiseSVN 将列出已更改的文件,允许您单独比较每个文件。
您现在可以单独调整日志对话框的 3 个窗格的大小。
日志对话框还有许多其他新的上下文菜单,允许您执行更多操作。
提交对话框
自动完成现在使用正则表达式拾取一些与语言相关的关键字(通常是类/方法/变量名)。
使用正则表达式扩展了错误跟踪集成,使其更容易挑选出您的问题 ID。 在 Issue Tracker Integration Spec 中阅读有关此内容的信息。
注释历史记录现在插入到当前光标位置,而不是始终插入到任何现有消息的开头。
仓库浏览器
几个新的上下文菜单项,允许您直接从浏览器导出或检出。
使用 Windows 文件关联或您选择的程序打开文件。
清理
Subversion 1.2 为 Cleanup 命令添加了额外的功能,使其现在可以进行更多修复。 如果工作副本文件的时间戳与 Subversion 记录的时间戳不匹配,但文件长度匹配,则 Subversion 会执行逐字节检查以查看文件是否真的不同,这可能会减慢状态检查的速度。
Cleanup
现在检查这些文件,如果内容匹配,它会重置其时间戳记录,以便将来的检查运行得更快。 如果您的工作副本在“检查修改
”和“提交
”对话框中生成文件列表的速度非常慢,请尝试在您的工作副本上运行 Cleanup
。 如果您使用了“使用提交时间戳
”选项,则绝对应该这样做。
设置对话框
设置对话框现在具有更新的界面,该界面不再那么拥挤,并且更易于使用。 这些选项也以更合乎逻辑的方式分组,因此您知道在哪里查找内容。
Tortoise Merge
您可以选择在查看文件差异时忽略大小写差异。 这对于 VB 源代码很有用,IDE 有时会更改 VB 源代码。