Я хотел бы знать, как именно git diff
применяет выражение, предоставленное для xfuncname, к результату и, если возможно, делегировать поиск текста заголовка фрагмента другой программе.
Контекст: я бы хотелхотел бы изменить настройку xfuncname для моего git diff
, чтобы отобразить полезный вывод для файла xml.Пример XML, который будет выглядеть следующим образом:
<layer1-1>
</layer1-1>
<layer1-2>
<layer2-1>
</layer2-1>
<layer2-2>
</layer2-2>
<layer2-3>
<layer3-1>
[...]
changes
[...]
</layer3-1>
<layer3-2>
</layer3-2>
<layer3-2>
</layer3-2>
</layer2-3>
</layer1-2>
<layer1-3>
</layer1-3>
И в идеале вывод с измененным заголовком блока должен выглядеть следующим образом:
@@ -15 +15 @@ <layer1-2><layer2-3><layer3-1>
[...]
-notchanged
+changed
[...]
Мои наблюдения предполагают, что git diff
применяетрегулярное выражение для части файла перед разницей, принимает последнее совпадение и отсюда первая группа захвата ;и он использует флаг m
.Это подходящее описание?
Поскольку RE2, по-видимому, не поддерживает ни обратных ссылок , ни lookaheads , я не уверен, что то, что я пытаюсь сделать, может быть заархивированоЭтот метод.Есть ли способ указать пользовательскую программу / скрипт, который получает diff в качестве входных данных, чтобы я мог сам указать заголовок блока?