如果我提交文件重命名并使用extdiff查看Beyond Compare或kdiff3中的差异,它们会在每一侧显示两个不同的文件。
使用Beyond Compare我可以手动从每一侧挑选任意文件进行比较,但如果我有很多重命名(即更改重命名的java包名),那将是一个巨大的痛苦。
我理解为什么会这样:extdiff只为diff工具制作两个临时快照目录。
所以我的问题是:有没有办法将重命名传递给diff工具,以便它将旧文件名与新文件名进行比较?
这可能是每个差异工具特有的。因此,如果您知道支持它的工具,请告诉我。
答案 0 :(得分:1)
注意这仅适用于使用TortoiseHg的差异。
我使用Beyond Compare 3配置Mercurial安装的方式如下:
(注意,这些只是与差异和合并相关的选项,您仍然需要在某些相同部分中使用其他选项,因此只需添加或更改,不要清除旧部分并替换为以下部分)
[ui] merge = bc3m [extensions] extdiff= [extdiff] cmd.bc3d = C:\Program Files (x86)\Beyond Compare 3\bcomp.exe opts.bc3d = /lro [merge-tools] 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 = True bc3m.gui = True [tortoisehg] vdiff=bc3d
现在:
重要提示:不要对合并工具和差异工具使用相同的名称(两者都使用bc3)。它混淆了所涉及的工具,并且只是向BC的启动屏幕发展。这就是合并工具命名为bc3m而diff工具命名为bc3d。
的原因另请注意,我已使用内置的beyondcompare工具,因为它们似乎配置不正确。特别是,使用内置工具时没有发生自动合并部分,但现在效果很好。此外,使用内置工具,使用重命名可视化差异显示目录比较或只是在BC的启动屏幕上进行操作,这使您可以选择所需的比较类型。
所以最后我只是进行了实验,直到我找到了正确的选项并自己设置了所有内容。
答案 1 :(得分:0)
处理重命名需要深入了解典型scm所具有的历史。特别是像Mercurial这样的dvcs。这就是他们可以处理重命名的方式。
有些感兴趣的事情可能是Git不跟踪重命名,对内容进行操作并且重命名无关紧要。
Diff工具可以处理检查更改,但它不能告诉其中的文件。如果文件已被重命名,则前面的历史记录也是错误的。任何外部差异工具通常会检查内容,因此提供文件的任务将保留给用户。
然而,Mercurial会跟踪重命名。请参阅可用于跟踪重命名文件的this extentsion。您可以使用它为任何外部差异工具提供正确的文件名进行比较。