20

我确实有一些被 SCM 替换的文本序列(在我的例子中是 Perforce)。

我确实想将 BeyondCompare 配置为将这些序列视为不重要的差异,以便在比较文件时能够忽略它们。

在我的情况下,它是关于 Python 源文件的,序列看起来像

# $Id: //depot/.../filename#7 $
# $DateTime: 2010/09/01 10:45:29 $
# $Author: username $
# $Change: 1234 $

有时这些序列可能是外部注释,但即使在这种情况下,我也希望能够忽略这些行,因为它们并没有真正改变。

4

2 回答 2

16

您需要定义一个新的语法元素(我们称之为“SCM”)并将其标记为不重要(请参阅此处的教程;选择“基本”并确保选中“正则表达式”)。

语法元素应该是(如果我正确解释你的例子):

^.*\$(Id|DateTime|Author|Change):.*$

这将忽略包含等的任何$Id:$DateTime:

如果您只想忽略以 开头的行# $...,请使用

^\s*#s*\$(Id|DateTime|Author|Change):.*$

如果您只想忽略之间的东西$(并将其他所有内容视为重要),请使用

\$[^$\r\n]*\$

或者

\$(Id|DateTime|Author|Change)[^$\r\n]*\$

取决于您是否关心这些关键字。

于 2010-09-06T15:12:37.473 回答
5

Beyond Compare 的解析器目前(v3/v4)不支持嵌套元素,因此如果文本已被分类为注释、字符串等,则文件格式语法不能用于将 SCM 序列标记为对特定文件类型不重要.

Beyond Compare 4.0 添加了对在整个比较中将任意文本标记为不重要的支持,与语法分开。

  1. 加载您感兴趣的文件
  2. 单击“会话设置”按钮(即带有裁判图标的规则)或使用“会话”->“会话设置”菜单项。
  3. 切换到重要性选项卡
  4. 单击“不重要的文本”列表+底部的按钮。
  5. 将纯文本或正则表达式添加到Text 以查找编辑并在必要时选中正则表达式复选框。在这种情况下,正则表达式将是:
    \$(Id|DateTime|Author|Change):.*\$
  6. 单击确定
  7. 默认情况下,这些更改只会影响当前比较。您可以将会话设置对话框底部的组合框从仅用于此视图更改为同时更新会话默认值,以使其影响所有文件类型的所有未来比较。
于 2016-04-29T21:59:11.920 回答