Понимание xfuncname по git diff - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы знать, как именно 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 в качестве входных данных, чтобы я мог сам указать заголовок блока?

...