1

如果我提交文件重命名并使用 extdiff 查看 Beyond Compare 或 kdiff3 中的差异,它们会在每一侧显示两个不同的文件。

使用 Beyond Compare,我可以从每一侧手动选择任意文件进行比较,但是如果我有很多重命名(即更改 Java 包名称以进行重构),那将是一个巨大的痛苦。

我明白为什么会这样:extdiff 只是为 diff 工具创建了两个临时快照目录。

所以我的问题是:有没有办法将重命名传达给 diff 工具,以便它将旧文件名与新文件名进行比较?

这可能特定于每个差异工具。因此,如果您知道支持它的工具,请告诉我。

4

2 回答 2

1

注意这仅适用于 TortoiseHg 的差异。

我使用 Beyond Compare 3 配置 Mercurial 安装的方式如下:

(注意,这些只是diff和merging相关的选项,在一些相同的部分你还需要其他选项,所以只添加或更改,不要清除你的旧部分并替换为下面的部分)

[用户界面]
合并 = bc3m

[扩展]
扩展差异=

[扩展差异]
cmd.bc3d = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
opts.bc3d = /lro

[合并工具]
bc3m.executable = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe
bc3m.args = $local $other $base $output /automerge /reviewconflicts /closescript /lro /rro /title1="Left parent" /title2="Right parent" /title3="Common base" /title4="Merged output"
bc3m.priority = 1
bc3m.premerge = 真
bc3m.gui = 真

[乌龟]
vdiff=bc3d

现在这个:

  • 如果可能,自动合并,除非存在合并冲突,否则不显示合并 GUI
  • 重命名文件的差异在左侧显示旧文件名,在右侧显示新文件名(虽然是时髦的临时目录名)

重要提示:不要为合并工具和差异工具使用相同的名称(如两者的 bc3)。它混淆了所涉及的工具,并且差异只是平底船到 BC 的启动屏幕。这就是为什么合并工具被命名为 bc3m 而差异工具被命名为 bc3d。

另请注意,我已放弃使用内置的超越比较工具,因为它们似乎配置不正确。特别是,使用内置工具时自动合并部分没有发生,但现在可以很好地工作。此外,使用内置工具,通过重命名可视化差异显示了目录比较或只是踢到 BC 的启动屏幕,这使您可以选择所需的比较类型。

所以最后我只是进行了试验,直到我找到了正确的选择并自己设置了一切。

于 2010-11-17T18:17:41.977 回答
0

处理重命名需要深入挖掘典型 scm 的历史。特别是像 Mercurial 这样的 dvc。这就是他们可以处理重命名的方式。

一些有趣的事情可能是 Git 不跟踪重命名,对内容进行操作并且重命名无关紧要。

Diff 工具可以处理检查更改,但它不能说明其中的文件。判断文件是否已重命名的先前历史记录也将是错误的。任何外部差异工具通常都会检查内容,因此提供文件的任务将由用户完成。

然而,Mercurial 确实会跟踪重命名。请参阅 可用于跟踪重命名文件的此扩展。您可以使用它为任何外部差异工具提供要比较的正确文件名。

于 2010-11-17T17:53:13.497 回答