在项目开发中最常见的需求之一是查看已更改的内容。您可能想要查看同一文件的两个版本之间的差异,或者两个单独的文件之间的差异。TortoiseSVN 提供了一个名为 TortoiseMerge 的内置工具,用于查看文本文件的差异。对于查看图像文件的差异,TortoiseSVN 也有一个名为 TortoiseIDiff 的工具。当然,如果您愿意,您可以使用自己喜欢的差异比较程序。
如果您想查看 您 在工作副本中所做的更改,只需使用资源管理器上下文菜单并选择 → 。
如果您想查看主干(如果您在分支上工作)或特定分支(如果您在主干上工作)上的更改,您可以使用资源管理器上下文菜单。只需按住 Shift 键,同时右键单击文件。然后选择 → 。在随后的对话框中,指定您想要将本地文件与之比较的存储库中的 URL。
您还可以使用存储库浏览器并选择两个树进行比较,可能是两个标签,或者一个分支/标签和主干。那里的上下文菜单允许您使用 名为“比较文件夹”的章节 以了解更多信息。
来比较它们。请阅读如果您想查看特定版本和您的工作副本之间的差异,请使用修订日志对话框,选择感兴趣的版本,然后从上下文菜单中选择
。如果您想查看上次提交的版本和您的工作副本之间的差异,假设工作副本尚未修改,只需右键单击文件。然后选择
→ 。这将执行上一次提交日期之前(如您的工作副本中所记录)的版本与工作 BASE 之间的差异比较。这将显示对该文件所做的最后更改,使其达到您现在在工作副本中看到的状态。它不会显示比您的工作副本更新的更改。如果您想查看已提交的两个版本之间的差异,请使用修订日志对话框并选择您要比较的两个版本(使用常用的 Ctrl 修改键)。然后从上下文菜单中选择 。
如果您从文件夹的修订日志中执行此操作,则会显示一个“比较版本”对话框,其中显示该文件夹中已更改文件的列表。请阅读 名为“比较文件夹”的章节 以了解更多信息。
如果您想在一个视图中查看特定版本中对所有文件所做的更改,您可以使用 Unified-Diff 输出(GNU patch 格式)。这仅显示差异以及一些上下文行。它比可视化文件比较更难阅读,但会将所有更改一起显示。从修订日志对话框中选择感兴趣的版本,然后从上下文菜单中选择
。如果您想查看两个不同文件之间的差异,您可以直接在资源管理器中通过选择两个文件(使用常用的 Ctrl 修改键)来完成。然后从资源管理器上下文菜单中选择 → 。
如果要比较的文件不在同一个文件夹中,请使用命令 Ctrl 修改键。
→ 标记要进行差异比较的第一个文件,然后浏览到第二个文件并使用 → 。要删除标记的文件,请再次使用命令 → ,但在单击它时按住如果您想查看工作副本中的文件与任何 Subversion 存储库中的文件之间的差异,您可以直接在资源管理器中通过选择文件,然后按住 Shift 键并右键单击以获取上下文菜单来完成。选择 → 。您可以对工作副本文件夹执行相同的操作。TortoiseMerge 以与显示 patch 文件相同的方式显示这些差异 - 一个已更改文件列表,您可以一次查看一个文件。
如果您不仅想查看差异,还想查看更改的作者、版本和日期,您可以从修订日志对话框中组合差异和 blame 报告。阅读 名为“Blame 差异”的章节 以了解更多详细信息。
TortoiseSVN 提供的内置工具不支持查看目录层次结构之间的差异。但是,如果您有支持该功能的外部工具,则可以使用该工具代替。在 名为“外部差异/合并工具”的章节 中,我们告诉您一些我们使用过的工具。
如果您配置了第三方差异比较工具,您可以在选择 Diff 命令时使用 Shift 来使用备用工具。请阅读 名为“外部程序设置”的章节,了解有关配置其他差异比较工具的信息。
有时在一个项目的生命周期中,您可能会将行尾从 CRLF
更改为 LF
,或者您可能会更改某个部分的缩进。不幸的是,即使代码的含义没有改变,这也会将大量行标记为已更改。这里的选项将有助于在比较和应用差异时管理这些更改。您将在 Merge 和 Blame 对话框以及 TortoiseMerge 的设置中看到这些设置。
忽略行尾 排除仅由于行尾样式差异而引起的更改。
比较空格 包括缩进和内联空格中的所有更改,作为添加/删除的行。
忽略空格更改 排除仅由于空格数量或类型更改而引起的更改,例如更改缩进或将制表符更改为空格。在之前没有空格的地方添加空格,或完全删除空格仍显示为更改。
忽略所有空格 排除所有仅包含空格的更改。
当然,任何内容已更改的行始终包含在差异中。
当您在存储库浏览器中选择两个树,或者当您在日志对话框中选择文件夹的两个版本时,您可以 → 。
此对话框显示所有已更改文件的列表,并允许您使用上下文菜单单独比较或 blame 它们。
您可以导出 更改树,如果您需要将您的项目树结构发送给其他人,但仅包含已更改的文件,这将非常有用。此操作仅适用于选定的文件,因此您需要选择感兴趣的文件 - 通常这意味着所有文件 - 然后 → 。系统将提示您输入保存更改树的位置。
您还可以使用 列表 导出到文本文件。
→ 将已更改文件的如果您想导出文件 列表 和 操作(修改、添加、删除),您可以使用 → 来完成。
顶部的按钮允许您更改比较方向。您可以显示从 A 到 B 需要进行的更改,或者如果您愿意,也可以显示从 B 到 A 的更改。
带有版本号的按钮可用于更改为不同的版本范围。当您更改范围时,两个版本之间不同的项目列表将自动更新。
如果文件名列表非常长,您可以使用搜索框将列表缩小到包含特定文本的文件名。请注意,使用简单的文本搜索,因此如果您想将列表限制为 C 源文件,您应该输入 .c
而不是 *.c
。
有很多工具可用于比较文本文件,包括我们自己的 TortoiseMerge,但我们经常发现自己也想看看图像文件是如何更改的。这就是我们创建 TortoiseIDiff 的原因。
→ 对于任何常见的图像文件格式都将启动 TortoiseIDiff 以显示图像差异。默认情况下,图像并排显示,但您可以使用“查看”菜单或工具栏切换到上下视图,或者如果您愿意,您可以叠加图像并假装您正在使用灯箱。
当然,您也可以放大和缩小并平移图像。您也可以通过左键拖动图像来简单地平移图像。如果您选择 链接图像 选项,则两个图像上的平移控件(滚动条、鼠标滚轮)将链接在一起。
图像信息框显示有关图像文件的详细信息,例如像素大小、分辨率和颜色深度。如果此框妨碍了您,请使用
→ 将其隐藏。如果您将鼠标悬停在图像标题栏上,您可以在工具提示中获得相同的信息。当图像叠加时,图像的相对强度(alpha 混合)由左侧的滑块控件控制。您可以单击滑块中的任何位置以直接设置混合,也可以拖动滑块以交互方式更改混合。 Ctrl+Shift-滚轮 更改混合。
滑块上方的按钮在 0% 和 100% 混合之间切换,如果您双击该按钮,混合将每秒自动切换一次,直到您再次单击该按钮。当寻找多个小变化时,这可能很有用。
有时您想看到差异而不是混合。您可能拥有印刷电路板的两个版本的图像文件,并想查看哪些走线发生了变化。如果您禁用 alpha 混合模式,差异将显示为像素颜色值的 XOR。未更改的区域将是纯白色,更改将是彩色的。
当您想要比较非文本文档时,通常必须使用用于创建文档的软件,因为它了解文件格式。对于常用的 Microsoft Office 和 Open Office 套件,确实有一些支持查看差异的功能,并且 TortoiseSVN 包含一些脚本,当您比较具有众所周知文件扩展名的文件时,可以使用正确的设置调用这些脚本。您可以通过转到 外部程序 部分中单击 来检查支持哪些文件扩展名并添加您自己的文件扩展名。
→ 并在如果您安装了 即点即用 版本的 Office 2010,并且您尝试比较文档,您可能会收到来自 Windows 脚本宿主的消息,如下所示: “ActiveX 组件无法创建对象:word.Application”。似乎您必须使用基于 MSI 的 Office 版本才能获得差异比较功能。
如果我们提供的工具不能满足您的需求,请尝试许多可用的开源或商业程序之一。每个人都有自己的最爱,此列表绝非完整,但这里有一些您可以考虑的程序:
WinMerge 是一个很棒的开源差异比较工具,也可以处理目录。
Perforce 是一个商业 RCS,但您可以免费下载差异/合并工具。从 Perforce 获取更多信息。
KDiff3 是一个免费的差异比较工具,也可以处理目录。您可以从 这里 下载它。
SourceGear Vault 是一个商业 RCS,但您可以免费下载差异/合并工具。从 SourceGear 获取更多信息。
ExamDiff Standard 是免费软件。它可以处理文件,但不能处理目录。ExamDiff Pro 是共享软件,并添加了许多好东西,包括目录差异和编辑功能。在这两种版本中,3.2 及更高版本都可以处理 unicode。您可以从 PrestoSoft 下载它们。
与 ExamDiff Pro 类似,这是一个出色的共享软件差异比较工具,可以处理目录差异和 unicode。从 Scooter Software 下载它。
Araxis Merge 是一个有用的商业工具,用于比较和合并文件和文件夹。它在合并中进行三向比较,并具有同步链接,以便在您更改了函数顺序时使用。从 Araxis 下载它。
请阅读 名为“外部程序设置”的章节,了解有关如何设置 TortoiseSVN 以使用这些工具的信息。