这使得查看实际区别变得非常困难(尤其是对于长存储过程)。我似乎找不到一个允许我忽略换行符(即将其视为空格)的免费diff/merge工具。到目前为止,我已经尝试了WinMerge和Beyond Compare,但没有成功。是否有人知道一个可以把这两个示例视为相同的diff工具(最好是免费的)?
例1:
the quick
brown
例2:
the
quick
brown
提前感谢。
the quick
brown
例2:
the
quick
brown
提前感谢。
我喜欢Araxis merge。虽然不是免费的,但非常值得。它可以忽略任何类型的空格,如果您需要。
Compare++ 是一款选择,你可以在“智能”菜单中尝试“忽略代码样式更改”。它支持许多语言的结构化比较,如C/C++、JavaScript、C#、Java等。
如果您希望在不下载任何内容的情况下轻松使用它,则可以在线使用(与其非开源版本T-SQL Tidy、Instant SQL Formatter等一样):
wdiff
是一种GNU工具,可按单词比较文件。 它可以使用-n
选项忽略换行符。$> wdiff -n ex1.txt ex2.txt
the
quick
brown
the
quick
brown [-fox-]
-3
或 --no-common
。以下是我向第一个文件添加了“fox”后的示例:$> wdiff -n -3 /tmp/ex1.txt /tmp/ex2.txt
======================================================================
[-fox-]
======================================================================
我们的SD Smart Differencer根据精确的语法和结构比较两个源程序,而不是根据原始文本。 它通过解析(SQL)源码来实现,与编译器相同,并比较相应的编译器数据结构(例如,抽象语法树)。 因此,SmartDifference 不关心换行符、空白或插入的注释。
它报告差异,不是基于换行符,而是基于编程语言结构(变量、表达式、语句、块、函数等)以及接近程序员意图的术语(删除、插入、移动、复制、重命名),而不是基于行插入或行删除。
SQL(像许多其他计算机语言名称一样)是一系列在语法上相似但在细节上不同的计算机语言的名称。因此,对于Smart Differencer来说,您使用的SQL方言很重要。我们有针对PLSQL和SQL2011的SQL前端(因此也有SmartDifferncers)。只要您的SQL保持在这两者的范围内,Smart Differencer就可以为您工作;如果您使用SQL Server或Postgres的额外好处,Smart Differencer目前无法帮助您。[我们作为业务的一部分开发语言解析器,因此我认为这只是延迟问题而不是永远无法解决]。
虽然OP在详细信息中询问了SQL,但他的标题问题是与语言无关的。 除了SQL之外,已经有许多其他广泛使用的语言的SmartDifferencers:C、C++、C#、Java等。
另一个选择是Emacs的Ediff。如果你不怕Emacs的话,它会非常好用。
PHPStorm的差异工具的“忽略空格:全部”命令可以完美地按照您的要求执行。它还集成了对许多版本控制系统(如SVN、git等)的支持,以及集成的SQL支持!
虽然不是免费的,但时间也不是免费的。想浪费时间用困难的方法做吗?请继续。
我仍然无法相信这是2014年,而这不是所有差异工具的标准功能!!
顺便说一句,我相信WebStorm的差异工具也可以使用。