【问题标题】:What are "synchronization points"?什么是“同步点”?
【发布时间】:2014-03-01 12:36:30
【问题描述】:

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

我查看了手册并四处寻找,但未能解开这个谜。

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

【问题讨论】:

  • 我在运行时遇到问题,这是因为在告诉 meld 添加同步点之前我没有左键单击编辑窗口,所以它正在将同步点添加到顶部的文件。在正确位置的一个文件中左键单击,添加一个同步点,然后在另一个文件中左键单击并添加一个同步点后,它就起作用了。另外,我认为它必须是 1.7+ 版本

标签: meld


【解决方案1】:

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

我仍在通过反复试验来解决这个问题,在一个文件中设置一个点,然后在另一个文件中设置一个匹配点。它没有我希望的那么好。我已经让同步点进入不匹配状态。但它确实让事情明显好转。

【讨论】:

  • 使用双向比较似乎可以正常工作。使用三向比较我无法让它工作。我会接受答案,因为我没有在我的问题中说明这一点。
  • @siebz0r 只要您在所有三个文件中设置同步点,我安装的 1.8.5 版本中的三向版本就可以工作。实时更新确实会中断,但是当您解决了您正在处理的部分时,您可以删除同步点并继续(使用实时更新)。根据 Araxis,这个功能真的应该只在两个文件中使用同步点,但它是免费的,所以我想我可以接受 :)
  • 使用 Meld 3.16,我的观察结果与 Joel 相同:有时同步点会有所帮助,但有时却神秘地没有。天真地我希望同步点会反映在锁定滚动期间行的对齐方式(即同步点将在滚动期间刚性连接),但不会发生类似的事情。
【解决方案2】:

这里是如何在 Meld 中使用同步点:

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

示例

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

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

结果如下:

这使得发现真正的差异变得更加容易,在本例中是 MIME 类型。

【讨论】:

  • 我不确定我是否做对了,或者我自己也搞糊涂了,但在右侧窗格之前,左侧窗格中的“添加同步点”似乎很重要(而不是其他顺序)。 (或者也许这无关紧要,无论哪种方式都一样,我没有再次测试确认,以防万一。)
【解决方案3】:

正如其他人所提到的,同步点是一种修复差异算法的方法,并在它自己感到困惑时告诉它什么匹配什么。

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

  1. 找到两条应该同步但没有同步的行。
  2. 左键单击左窗格中的行。
  3. 在同一位置右键单击并选择添加同步点。
  4. 左键单击右窗格中的行。
  5. 在同一位置右键单击并选择添加同步点。

这样做后,我可以在差异发生中断的位置调整差异,从而更快地验证我的更改。断几行还好,断几屏没这个功能比较麻烦。

下面显示了一个在else 关键字处混淆的融合差异。左侧的块与新的default: 块进行比较。 (点击图片放大)

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

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

现在结果是正确的:

现在我可以看到只有 .-> 更改,因为我将对象向量更改为指向对象的共享指针向量。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2015-09-20
    相关资源
    最近更新 更多