什么是“同步点”?

时间:2014-02-05 07:31:41

标签: meld

在Meld中,有一个可用于添加同步点的选项。不幸的是,我无法弄清楚这些所谓的同步点是做什么的。我已经弄乱了它,但实际上似乎没有做任何事情(除了打破现场比较)。

我查过手册并四处搜寻,但未能解开这个谜。

该选项在编辑菜单和上下文菜单中可用:

synchronization points in edit menu synchronization points in context menu

3 个答案:

答案 0 :(得分:14)

目的是用户能够在被比较的每个文件中设置点,这些点应该匹配。这有助于代码匹配算法在差异复杂的情况下确定两个文件如何相互关联。

我仍然通过反复试验来确定它,在一个文件中设置一个点然后在另一个文件中设置匹配点。它没有像我希望的那样好用;我让同步点进入不匹配状态。但它确实使事情明显变得更好。

答案 1 :(得分:4)

以下是如何在Meld中使用同步点:

  1. 找到两条应该匹配的行,但被Meld视为完全不同的行
  2. 右键单击左侧的一个,单击“添加同步点”
  3. 右键单击右侧,单击“添加同步点”
  4. 就是这样!现在,Meld将两条线显示在同一水平。
  5. 您可以添加更多同步对,或清除所有同步对。
  6. 实施例

    在下面的屏幕截图中,您可以看到左侧和右侧的“GetSyncItemFromRemotePath”部分非常相似,但Meld未能看到这一点。所以我在左边插入一个同步点,如下所示:

    enter image description here

    ...然后我在右侧的“GetSyncItemFromRemotePath”上添加另一个同步点。

    结果如下:

    enter image description here

    它可以更容易地发现真正的差异,在这种情况下是MIME类型。

答案 2 :(得分:0)

正如其他人所提到的,同步点是一种修复diff算法并告诉它什么与它自身混淆时匹配的方法。

使用它们的关键是在一行上单击一下,然后右键单击并从弹出菜单或主菜单中选择“添加同步点”。完整的解决方案是:

  1. 找到两条应该同步但不同步的线
  2. 左键单击左窗格中的行
  3. 在同一位置单击鼠标右键,然后选择“添加同步点”
  4. 左键单击右窗格中的行
  5. 在同一位置单击鼠标右键,然后选择“添加同步点”

通过这种方式,我可以在差异中断的地方调整差异,从而更快地验证我的更改。当它只中断几行时,就很好了,当它中断了几行屏幕时,没有这种功能进行比较就变得很繁琐。

以下显示了一个融合差异,它在else关键字中感到困惑。左边的那个块与新的default:块进行比较。 (点击图片放大)

enter image description here

首先我左键单击左侧面板中的else,然后右键单击+“添加同步点”。

接下来,我左键单击右侧面板中的else,然后再次右键单击+“添加同步点”。

结果现在是正确的:

enter image description here

现在我可以看到,当我将对象的向量更改为对象的共享指针的向量时,.仅被->更改了。

请注意,Meld在同步位置添加了一条黑线。这样可以更轻松地查看在何处添加同步点。