5

UltraCompare Pro刚问世以来,我一直是它的用户,我认为它是一个功能非常齐全的比较和合并工具。但是,由于我一直在更仔细地研究 DVCS,我发现它处理三向合并的方式与(大多数?)其他工具不同。所以我想知道为什么会这样,以及我是否因此而错过了什么。

在 UltraCompare 中,有三个合并面板(我们称它们为 base、local 和 other)。所有合并操作都发生在这些面板中。在实践中,这意味着我在中间窗格(本地)上完成我的工作,合并来自右侧(其他)或可能来自左侧(基础)的共同祖先的更改。中间窗格在会话期间被修改,然后被保存 - 并作为合并的结果提交。第四个窗格(输出窗口)仅包含有关差异结果的信息。

截图 UC
(来源:ultraedit.com

在其他工具中,这三个窗格似乎仅以只读状态存在,而第四个底部窗格(输出)是所有合并发生的地方。有一个额外的合并窗口的原因是什么?跟踪所有更改是否更容易?还是只是因为每个人一直都这样做,所以我们正在复制这种行为?您对此有何看法?

截图 kdiff3
(来源:hginit.com

我不确定是否存在最佳或正确答案,所以我还没有提出这个问题,但我也会在这里听从你的意见。

4

4 回答 4

6

对我来说似乎很简单,您可能非常希望在进行更改时保持未更改的“本地”版本可见。

original       local         other           merged

               bar= foo+1    bar= foo+2      bof= foo+2
                                             zot= foo+1
...            ...           ...             ...
print foo      print bar     print foo+1     print bar??

两者localother引入了新变量bar。将第一个更改合并到bof/ zot,去喝杯茶,回来尝试合并print。等等,里面有bar什么local?如果原件local不存在,那么该信息就消失了,您正在使用另一个文本编辑器来搞清楚发生了什么。

这是一个人为的例子,但是对于任何一组你不能全部记住并一次性完成的更改,这种事情很容易发生。一般来说,3WM 总是有两个可变元素,变化 A 和变化 B。要重现其中的所有信息,您需要四个视图来查看所有可能的排列:(0原始)、ABAB(合并)。

于 2010-04-12T11:45:58.697 回答
4

项目:Merge是我为 XML 编写的比较和合并工具。我查看了标准的 4 窗格方法,几乎​​立即放弃了它,因为它是一种非常浪费的数据显示方式。上面的屏幕截图充分证明了一点,几乎所有窗格都多次显示完全相同的数据。

因此,我开发了一种单窗格方法来显示所有输入文件并显示其中哪些对输出有贡献。(或者在比较文件时存在差异。)虽然我不允许对文本进行完全自由形式的编辑(主要是由于 XML 节点的管理和引用方式),但合并输出的某些部分可以或多或少地编辑将在常规文本编辑器中。(就导航而言,我的编辑器键盘快捷键紧跟 Visual Studio 的快捷键。)最值得注意的是字符数据、注释和属性值。您还可以完整地剪切和粘贴 XML 节点。(但显然只是作为外部应用程序的文本。)

以下屏幕截图显示了一个三向合并,其中大多数更改出现在“左侧”文件中,以及所选更改下方的未解决冲突:

替代文字

于 2010-11-21T10:49:08.040 回答
3

就个人而言,我喜欢免费的 perforce 合并工具 (p4merge)。它还有 4 个窗口 - 顶部中间用于原始(分支之前),左侧用于目标分支,右侧用于源分支,底部是可编辑的。

我比你的选项 1 更喜欢这个,因为所有 3 个原始文件都可能包含影响合并的重要信息。

于 2010-04-12T11:08:35.127 回答
2

基本上有两种方法可以显示两个文件之间的差异:

  • 两个面板并排
  • 一个面板

图形化:

aaa aaa
bbb ···
··· ccc
ddd ddd

 aaa
-bbb
+ccc
 ddd

有些程序使用第一个(例如 WinMerge),有些程序允许选择(例如 TortoiseMerge 或 Google Project Hosting)。这可能是一个口味问题,但是当您想要跟踪更改时,我发现第二个更直观。但是,当您想要编辑更改时,您需要两个面板。

三路合并时,不同的布局由此而来。Ultra compare 使用单面板方法来显示更改,因此您可以获得两个面板和第三个面板进行编辑。其他程序使用两个面板的方法来显示更改,因此您可以获得三个面板和第四个用于编辑的面板。

再说一次,我相信这只是品味问题。

于 2010-04-12T11:34:15.513 回答