我正在编写一个小测试套件,该套件运行要在一堆输入文件上进行测试的工具。对于每个输入文件,该工具正在创建一个相应的输出文件(两者都是 XML 格式)。输入和输出文件在 Git 存储库中签入。
输出文件带有编译工具的时间,因此输出文件在被测试工具重新创建后肯定会被修改。
为了快速了解输出是否已更改(当我修改工具的源代码时),我想检查节点的内容是否OutputFingerprint
已更改(对输出文件相关部分的内容进行简单散列) .
阅读手册git-diff
,我发现有一个-G
选项:
-G<regex>
查找添加或删除的行与给定 <regex> 匹配的差异。
不幸的是,它们没有提供如何使用该-G
选项的示例。
我的第一个想法是简单地写
git diff -GOutputFingerprint
但这是错误的:
> git diff -GOutputFingerprint
error: invalid option: -GOutputFingerprint
接下来的想法是将正则表达式放在斜杠中,这也没有成功:
> git diff -G/OutputFingerprint/
error: invalid option: -GC:/Program Files/Git/OutputFingerprint/
-G
此外,简单地在and之间放置一个空格OutputFingerprint
是行不通的:
> git diff -G OutputFingerprint
fatal: ambiguous argument 'OutputFingerprint': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
当我在git diff
没有任何参数的情况下调用时,我得到了修改:
- <OutputFingerprint>e45807ca76fc5bb78e9e928c6fb7eed6</OutputFingerprint>
+ <OutputFingerprint>d0846851bc9d52b37f7919def78660a2</OutputFingerprint>
另一个想法是使用git diff -S".*OutputFingerprint.*" --pickaxe-regex
,但这也不成功。
git --version
给我git version 1.7.3.1.msysgit.0
是否相关。
当我询问git diff --help
时,提供的手册向我显示了该-G
选项。
那么,谁能给我一个如何git diff -G
正确使用的例子?