Я пишу небольшой набор тестов, который запускает инструмент для тестирования на множестве входных файлов. Для каждого входного файла инструмент создает соответствующий выходной файл (оба в формате 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
и 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
-- интересно, есть ли у вас поддержка _2_? Вам может понадобиться более новая версия для поддержки того, что вы хотите сделать. - person sarnold   schedule 23.02.2011-G
... Просто убедитесь, что вы получили какой-то тип различий, прежде чем пытаться его отфильтровать. - person sarnold   schedule 23.02.2011-G
у меня работает на MacOSX, версия git 1.7.4.1. - person sarnold   schedule 23.02.2011git diff -G OutputFingerprint
' ;) - person Sylvain Defresne   schedule 23.02.2011