gpt4 book ai didi

command-line-interface - 如何执行忽略所有注释的差异?

转载 作者:行者123 更新时间:2023-12-02 13:32:20 24 4
gpt4 key购买 nike

我有一个从原始项目 fork 的大型代码库,我正在尝试找出与原始项目的所有差异。许多文件编辑包括注释掉的调试代码和其他杂项注释。 Ubuntu下名为Meld的GUI diff/merge工具可以忽略注释,但只能忽略单行注释。

是否有其他方便的方法来仅查找非注释差异,无论是使用 GUI 工具还是 Linux 命令行工具?如果有什么不同的话,代码是 PHP 和 Javascript 的混合体,所以我主要感兴趣的是忽略 ///* */ #.

最佳答案

要使用视觉差异,您可以尝试 MeldDiffMerge .

差异合并

它的规则集和选项提供自定义行为。

GNU diffutils

从命令行角度来看,您可以对 diff 使用 --ignore-matching-lines=RE 选项,例如:

diff -d -I '^#' -I '^ #' file1 file2

请注意,正则表达式必须匹配两个文件中的相应行,并且它匹配 block 中每个更改的行才能工作,否则它仍然会显示差异。

使用单引号来保护模式免受 shell 扩展并转义正则表达式保留字符(例如括号)。

我们可以阅读diffutils手册:

However, -I only ignores the insertion or deletion of lines that contain the regular expression if every changed line in the hunk (every insertion and every deletion) matches the regular expression.

In other words, for each non-ignorable change, diff prints the complete set of changes in its vicinity, including the ignorable ones. You can specify more than one regular expression for lines to ignore by using more than one -I option. diff tries to match each line against each regular expression, starting with the last one given.

armel here 也很好地解释了这种行为.

<小时/>

另请参阅:

或者,检查其他差异应用程序,例如:

关于command-line-interface - 如何执行忽略所有注释的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com