5.9. 查看差异

在项目开发中,有一个很常用的要求就是查看更改。可能是你要求查看同一文件的两个版本之间的差异,或者是查看两个独立的文件的差异。TortoiseSVN自带了一个工具叫TortoiseMerge用来查看文本文件的差异。也有一个叫TortoiseIDiff的工具来比较图像文件的差异。当然,你可以根据你自己的喜好来选择比较差异的工具。

5.9.1. 文件差异

本地更改

如果你想看到你的本地副本有哪些更加,只用在资源管理器中右键菜单下选TortoiseSVN比较差异

与另外一个分支/标签之间的差异

如果你想查看主干程序(假如你在分支上开发)有哪些修改或者是某一分支(假如你在主干上开发)有哪些修改,你可以使用右键菜单。在你点击文件的同时按住Shift键,然后选择TortoiseSVN URL比较。在弹出的对话框中,将特别显示将与你本地版本做比较的版本的URL地址。

你还可以使用版本库浏览器,选择两个目录树比较,也许是两个标记,或者是分支/标记和最新版本。邮件菜单允许你使用比较版本来比较它们。阅读第 5.9.2 节 “比较文件夹”以便获得更多信息。

与历史版本的比较差异

如果你想查看某一特定版本与本地副本之间的差异,使用显示日志对话框,选择要比较的版本,然后选择在右键菜单中选与本地副本比较差异

两个历史版本的比较

如果你要查看任意已提交的两个历史版本之间的差异,在版本日志对话框中选择你要比较的两个版本(一般使用 Ctrl-更改),然后在右键菜单中选比较版本差异

如果你在文件夹的版本日志中这样做,就会出现一个比较版本对话框,显示此文件夹的文件修改列表。阅读第 5.9.2 节 “比较文件夹”以便获得更多信息。

提交所有修改

如果你要在一个视窗中查看某一版本的所有更改,你可以使用统一显示所有比较 (GNU 片段整理)。它将显示所有修改中的部分内容。它很难显示一个全面清晰的比较,但是会将所有更改都集中显示出来。在版本日志对话框中选择某一版本,然后在右键菜单中选择统一显示所有比较

文件差异

如果你要查看两个不同文件之间的差异,你可以直接在资源管理器中选择这两个文件(一般使用 Ctrl-modifier),然后右键菜单中选TortoiseSVN比较差异

WC文件/文件夹与URL之间的比较差异

如果你要查看你本地副本中的任一文件与版本库中任一文件之间差异,

谴责信息之间的比较差异

如果你要查看的不仅是比较差异而且包括修改该版本的作者,版本号和日期,你可以在版本日志对话框中综合比较差异和谴责信息。这里有更多详细介绍第 5.20.2 节 “追溯不同点”

比较文件夹差异

TortoiseSVN 自带的内置工具不支持查看多级目录之间的差异,但你可以使用支持该功能的外置工具来替代。在这里 第 5.9.4 节 “其他的比较/合并工具”我们可以介绍一些我们使用过的工具。

5.9.2. 比较文件夹

图 5.21. 修订版本版本比较对话框

修订版本版本比较对话框

当你在版本库浏览器中选择了两个树,或者在日志对话框中选择了一个文件夹的两个版本,就可以使用上下文菜单比较版本

这个对话框显示一个所有已经修改的文件列表,允许你使用邮件菜单单独的比较或回溯它们。

你也可以将已经修改的文件列表导出到一个文本文件中,或者将修改的文件导出到一个目录。这个操作只在选择的文件上工作,所以你需要选择感兴趣的文件 - 通常是所有文件。

如果你需要导出文件列表和动作(修改,增加,删除),你可以使用快捷键Ctrl-A选择所有项,用Ctrl-C将详细列表复制到剪贴板。

顶部的按钮允许你改变比较的方向。你可以显示从A到B的修改,或者如果你喜欢,显示从B到A的修改。

有版本数字的按钮可以用来改变版本范围。当你改变范围时,两个版本不同的项目列表会自动更新。

5.9.3. 使用 TortoiseIDiff 进行比较的图像

我们有许多有用的比较文本文件的工具,包括我们自带的TortoiseMerge,但是我们也需要查看图像文件的更改。这就是我们设计TortoiseIDiff的原因。

图 5.22. 差异察看器截图

差异察看器截图

TortoiseSVN比较差异TortoiseIDiff可以显示同种格式的图像差异。一般情况下是左右对称地显示两个图像,但你也可以通过调整视图滑动条转变为上下显示的模式,如果你愿意,这里支持使用透明框进行图像覆盖的方式,在顶端的滑动条可以调整图像之间的吻合程度(alpha blend),你也可以使用Ctrl-Shift-Wheel来调整这种程度。

当然你也可以放大和缩小,或者拉伸图像。你也可以简单的通过左拖组合图像。如果你选择连接图像,则被选择(滑动条,鼠标)的两个图像就被关联起来。

在图像信息框中显示了图像的基本信息,比如像素的大小,颜色的深度。如果觉得这个框碍眼可以选择视图图像信息来隐藏它

5.9.4. 其他的比较/合并工具

如果我们提供的这些工具不是你所需要的,可以尝试使用一些其他开源的或者商业的软件。每个人都有不同喜好,下面列表虽不完全,或许有些你也会认可的:

WinMerge

WinMergeWinMerge也是一款很好的能处理目录的开源软件。

Perforce Merge

Perforce 是一款商业 RCS,但是你也可以免费下载到。可以从Perforce获得更多信息。

KDiff3

KDiff3也是一款能处理目录的免费比较工具。你可以从here下载。

ExamDiff

ExamDiff Standard是免费软件。它能处理文件但不能处理目录。ExamDiff Pro是共享软件,拥有一系列的功能包括目录比较和编辑的能力。对于以上体验,3.2及以上版本能处理二进制。你可以从PrestoSoft下载它们。

Beyond Compare

和ExamDiff Pro一样,这也是一款很不错的共享软件,同样也能进行目录比较和二进制处理。下载地址Scooter Software

Araxis Merge

Araxis Merge是一款能对文件和文件夹进行比较和合并的商业软件。它从三条比较路径进行合并,而且在你修改的同时进行及时有效的链接。可以从这里下载Araxis

SciTE

这款文本编译器在统一比较时提供语法显示,读起来更加容易。可以从这里下载Scintilla

Notepad2

Notepad2的设计旨在替代 Windows自带的记事本的功能,它以开源编译控制为基础。在查看统一比较时,它能实现比Windows自带的记事本更多功能。免费下载here

第 5.27.4 节 “外部程序设置”这里可以了解到怎样起用TortoiseSVN来使用这些工具。