【发布时间】:2017-11-02 22:23:43
【问题描述】:
我试图找出 C/C++ 源代码中只有源代码发生变化的显着差异。我知道您可以使用git diff -G<regex>,但在可以运行的正则表达式类型方面似乎非常有限。例如,它似乎没有提供在 C/C++ 中忽略多行 cmets 的方法。
在运行差异之前,git 或者最好是 libgit2 中是否有任何方法可以忽略 cmets(包括多行)、空格等?还是一种确定 diff 输出中的一行是否为注释的方法?
【问题讨论】:
-
值得怀疑。如果你真的很坚持,你可以预处理这两个文件,然后比较输出。
-
你试过什么 git diff 命令,用什么
regex? -
@AndrewC 这就是我害怕的。目前,我们只是通过一个工具为每个版本提供 git cat-file 的输出,但是由于这两个文件都很大,因此会碰到大型 repos 的堆顶部。我正在尝试在我们的工具中找到某种使用 libgit2 的方法,以提高内存和时间效率。
-
可以使用 gitattrubutes 更改用于特定文件的差异程序(通常通过文件扩展名),但似乎没有什么能阻止您为“*”文件定义“外部差异驱动程序”。
-
may tortoiseGit 可以通过 diff 的图形用户界面帮助您?