忽略超越比较的语法差异

时间:2012-08-15 13:57:37

标签: version-control compare beyondcompare

在代码分支中,我已将所有代码从obj.varname更改为obj("varname"),当我比较代码时,我想忽略这些差异,因为varname是相同的。

我有一个我认为需要的正则表达式但很遗憾无法使用Scooter的Beyond Compare来忽略比较

^obj\("\w*"\)|obj\.\w*$

我正在关注本教程http://www.scootersoftware.com/support.php?zz=kb_unimportantv3

所以我的问题是:这甚至可能超越比较吗?如果是,请分享包含说明或发布截图的解决方案。

1 个答案:

答案 0 :(得分:3)

Beyond Compare 3的专业版通过文本替换功能支持此功能。如果您已购买标准版许可证,则需要恢复到试用模式进行测试:http://www.scootersoftware.com/suppo...?zz=kb_evalpro

  1. 在文本比较中加载两个文件。
  2. 会话菜单中打开会话设置对话框,然后在替换标签上点击新建创建一个新的替代品。
  3. 要查找的文字编辑中,使用(\w+)\.(\w+)
  4. 替换为编辑中,使用$1("$2")
  5. 选中正则表达式复选框。

  6. 另一种方法是将obj.varnameobj("varname")的任何实例标记为不重要。基本步骤是这样的:

    1. 在文本比较中加载两个文件。
    2. 会话菜单中打开会话设置对话框,然后在重要性标签上点击编辑语法... < / strong>按钮。
    3. 在下一个对话框中,点击顶部列表框下方的新建... 按钮。
    4. 元素名称字段更改为有用的字段(例如“PropertyAccess”)。
    5. 类别* 更改为列表
    6. 列表中的文字 *编辑中,添加以下两行:

      obj.varname
        obj("varname")

    7. 点击确定关闭语法项对话框,然后再次点击确定以关闭文字格式 *语法项目。

    8. 会话设置对话框的语法元素列表框中取消选中“PropertyAccess”(或其他任何名称),然后点击确定关闭它。
    9. 这种方法不够灵活或干净。在上面的步骤中,您匹配特定的,硬编码的对象和变量名称,因此obj.varname不重要,但obj.othervar不重要,即使它与obj("othervar")对齐。如果双方的文字都不重要,那么差异将是不重要的;如果一方很重要,那将是一个重要的区别。因此,通过上述步骤,obj.varnameobj("varname")在任何地方都不重要,但它会正常工作,因为它们要么与其他符合这些定义的情况相匹配(因此也不重要)或将会匹配其他与该定义不匹配的东西,这将是重要的,并将使差异变得重要。

      您可以使用正则表达式来匹配更多常规文本类别,但您可能不希望这样。例如,如果您想匹配该模式后面的所有文本,则可以改为使用这两行:

      \w+\.\w+
      \w+\("\w+"\)
      

      然后检查语法项对话框中的正则表达式复选框,以便它们以这种方式匹配。

      这样做的好处是,匹配这些模式的任何文本都是不重要的。 abc.newvardef.varname之间的区别将被视为不重要的差异,因为双方都会对不重要的定义进行匹配。这对于评论或空白更改等内容非常有用,但可能不是您想要在此处执行的操作。