代码之家  ›  专栏  ›  技术社区  ›  Tim Pietzcker

三方融合-不同的哲学?

  •  4
  • Tim Pietzcker  · 技术社区  · 15 年前

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

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

    Screenshot UC http://www.ultraedit.com/assets/images/feature_map/uc/three_way_text.png

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

    Screenshot kdiff3 http://hginit.com/i/04-kdiff3-after.png

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

    4 回复  |  直到 13 年前
        1
  •  6
  •   bobince    15 年前

    在我看来很简单,当您进行更改时,您很可能希望保持一个不变的本地版本可见。

    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??
    

    两个 local other 引入了一个新变量 bar . 将第一个更改合并到 bof / zot 去喝杯茶,回来试着把 print . 等等,什么事 酒吧 在里面 地方的 ?如果原件 地方的 不在那里,信息不见了,你正和另一个文本编辑器纠缠不清,想弄清楚到底发生了什么。

    这是一个做作的例子,但是这种事情很容易发生在任何一组你不能全神贯注、一气呵成的变化中。一般来说,3wm总是有两个变量元素,即change a和change b。要复制其中的所有信息,您需要四个视图来显示以下所有可能的排列: 0 (原件) A , B AB (合并)。

        2
  •  4
  •   user420442    15 年前

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

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

    以下屏幕截图显示了与“左”文件中显示的大多数更改的三向合并,以及选定更改下未解决的冲突:

    alt text

        3
  •  3
  •   Oded    15 年前

    就个人而言,我喜欢自由性能合并工具(p4merge)。它还具有4个窗口:原始窗口的中上角(分支前),目标分支窗口的左上角,源分支窗口的右上角,底部可编辑。

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

        4
  •  2
  •   Álvaro González    15 年前

    基本上有两种方法来显示 文件夹:

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

    图形化:

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

     aaa
    -bbb
    +ccc
     ddd
    

    有些程序使用第一个程序(如WinMerge),有些程序允许选择(如TortoiseMerge或Google项目托管)。这可能是一个品味问题,但当你想跟踪变化时,我发现第二个更直观。但是,如果需要,需要两个面板 编辑 变化。

    做的时候 三向 合并,不同的布局来自于此。Ultra Compare使用单面板方法来显示更改,因此您可以使用两个面板加上第三个面板进行编辑。其他程序使用两个面板的方法来显示更改,这样您可以得到三个面板加上第四个面板进行编辑。

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

    推荐文章