如何配置BeyondCompare忽略评论中的SCM替换文本?

sor*_*rin 19 version-control perforce ignore beyondcompare

我确实有一些文本序列被SCM取代(在我的案例中为Perforce).

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

在我的例子中,它是关于Python源文件,序列看起来像

# $Id: //depot/.../filename#7 $
# $DateTime: 2010/09/01 10:45:29 $
# $Author: username $
# $Change: 1234 $
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ker 16

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

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

^.*\$(Id|DateTime|Author|Change):.*$
Run Code Online (Sandbox Code Playgroud)

这将忽略任何包含线$Id:,$DateTime:等等.

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

^\s*#s*\$(Id|DateTime|Author|Change):.*$
Run Code Online (Sandbox Code Playgroud)

如果你只想忽略它们之间的东西$(并将其他一切视为重要),请使用

\$[^$\r\n]*\$
Run Code Online (Sandbox Code Playgroud)

要么

\$(Id|DateTime|Author|Change)[^$\r\n]*\$
Run Code Online (Sandbox Code Playgroud)

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


Zoë*_*son 5

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

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

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