我正在编写一个小测试套件,运行要在一堆输入文件上进行测试的工具。对于每个输入文件,该工具正在创建相应的输出文件(两者都是XML格式)。输入和输出文件在Git仓库中签入。
输出文件带有编译工具的时间,因此输出文件在被测试工具重新创建后肯定会被修改。
如果输出已经改变(当我修改工具的源代码时)快速一瞥,我想检查节点OutputFingerprint
的内容是否已经改变(对内容的简单哈希)输出文件的相关部分)。
阅读git-diff
手册,我发现有一个-G
选项:
-G<正则表达式>
查找添加或删除的行与给定的< 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
和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
的示例吗?
答案 0 :(得分:5)
git diff -Garegex
使用msysgit 1.7.4正常运行,但仅在bash会话中(在DOS会话中,它不返回任何内容)
如果正则表达式与分阶段版本中已添加或已删除的行匹配,则会显示diff
。
已添加或已删除:未更改
在您的情况下, 它将无法正常工作
OP eckes报告其有效(仅限msysgit1.7.4 +),并补充说-G
git add
选项包括:
“查找添加或已删除行与给定正则表达式匹配的差异”,
这与diff输出有关,其中更改的行打印为一个添加的行和一个删除的行。
示例:我添加了一个新行'aaa'(没有$ git diff -Gaaa
diff --git a/conf/fragments/xxx_repos.conf b/conf/fragments/xxx_repos.coindex 263fa85..3475f9b 100644
--- a/conf/fragments/xxx_repos.conf
+++ b/conf/fragments/xxx_repos.conf
@@ -10,3 +10,4 @@ repo xxx-sdsfwk
RW+ = vonc user1 user2
RW = @xxx_users
xxx-sdsfwk "Owner" = "for..."
+aaa
:只是一个简单的编辑)
{{1}}