在众所周知的开源项目的存储库中,所有文件都包含一个版本字符串,其时间戳为第一行:
<?php // $Id: index.php,v 1.201.2.10 2009-04-25 21:18:24 stronk7 Exp $
即使我不明白为什么他们这样做 - 因为文件已经受版本控制 - 我不得不忍受这个。
主要的问题是,如果我尝试'st'或'diff'一个版本来了解从前一版本中发生了什么变化,那么存储库中包含的每个文件显然都被标记为已修改,并且差异变为难以理解和难以管理。
我想知道是否有办法在匹配正则表达式时忽略执行diff / st的第一行。
该项目属于cvs - cvs,是的,您已经正确阅读 - 并且包含在更大的mercurial存储库中。
答案 0 :(得分:2)
我不知道cvs,但是对于hg,你可以使用捆绑的extdiff
extension的任何外部差异工具,任何现代工具都应该能够让你忽略符合某些模式的差异。
我发誓Beyond Compare,它允许任意语法定义。
kdiff3有preprocessor commands,您可以通过它来管道输入。
答案 1 :(得分:1)
如果您尝试
man diff
你会找到
--ignore-matching-lines=RE Ignore changes whose lines all match RE.
在网络上搜索“忽略匹配行”会给出示例:
diff --unified --recursive --new-file - 忽略匹配线= '[$]作者。 [$]' --ignore-matching-lines ='[$] Date。 [$]'...
(http://www.cygwin.com/ml/cygwin-apps/2005-01/msg00000.html)
这样试试:
diff --ignore-matching-lines='[<][?]php [/][/] [$]Id:'