【发布时间】:2011-07-02 14:43:54
【问题描述】:
我正在编写一个小测试套件,该套件运行该工具以对一堆输入文件进行测试。对于每个输入文件,该工具正在创建一个相应的输出文件(两者都是 XML 格式)。输入和输出文件在 Git 存储库中签入。
输出文件带有编译工具的时间,所以输出文件在被测试工具重新创建后肯定会被修改。
为了快速了解输出是否已更改(当我修改工具的源代码时),我想检查节点 OutputFingerprint 的内容是否已更改(对相关内容的简单哈希部分输出文件)。
阅读git-diff的手册,我发现有一个-G选项:
-G
查找添加或删除的行与给定匹配的差异。
不幸的是,它们没有提供如何使用-G 选项的示例。
我的第一个想法是简单地写
git diff -GOutputFingerprint
但那是错误的:
> git diff -GOutputFingerprint
error: invalid option: -GOutputFingerprint
接下来的想法是将正则表达式放在斜杠中,这也不成功:
> git diff -G/OutputFingerprint/
error: invalid option: -GC:/Program Files/Git/OutputFingerprint/
另外,简单地在-G 和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 的例子?
【问题讨论】:
-
尝试在
G和正则表达式之间添加一个空格? -
嘿,我的 git 1.7.1 没有
-G选项——我想知道你的是否有-G支持?您可能需要更新的版本来支持您想做的事情。 -
只是为了确保是否有实际的更改需要报告?如果没有未提交的更改,即使没有
-G,我也会遇到“未知修订”之类的错误...只需确保在尝试过滤之前获得某种类型的差异。 -
语法
git diff -G OutputFingerprint在 MacOSX 上为我工作,git 版本 1.7.4.1。