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