Подтвердить что ты не робот

Настройка заголовков в git diff

При просмотре diff с использованием git diff каждое изменение начинается с строки, например:

@@ -28,41 +20,10 @@ namespace ConsoleApplication1

Для C конечная часть довольно описательная - она ​​показывает, например, функцию, в которой произошло изменение. Но для С# он только показывает пространство имен, что не очень полезно. Я думаю, это потому, что он показывает последнюю строку, которая не имеет отступов. Есть ли способ настроить это?

4b9b3361

Ответ 1

Я нашел это, строка называется заголовок куска и документация говорит, как настроить его:

Определение пользовательского заголовка куска

Каждая группа изменений (называемая "ханк") в текстовом выводе diff префиксируется строкой вида:

@@ -k,l +n,m @@ TEXT

Это называется заголовком блока. Часть "TEXT" по умолчанию является строкой, которая начинается с алфавита, подчеркивания или знака доллара; это соответствует тому, что использует вывод GNU diff -p. Этот выбор по умолчанию, однако, не подходит для некоторого содержимого, и вы можете использовать собственный шаблон для выбора.

Во-первых, в .gitattributes вы должны назначить атрибут diff для путей.

*.tex   diff=tex

Затем вы должны определить конфигурацию "diff.tex.xfuncname", чтобы указать регулярное выражение, совпадающее со строкой, которую вы хотели бы видеть в качестве заголовка блока "TEXT". Добавьте раздел в ваш файл $GIT_DIR/config (или файл $HOME/.gitconfig) следующим образом:

[diff "tex"]
        xfuncname = "^(\\\\(sub)*section\\{.*)$"

Заметка. Парсер конфигурационных файлов съедает один уровень обратной косой черты, поэтому вам потребуется удвоить обратную косую черту; вышеприведенный шаблон выбирает строку, которая начинается с обратной косой черты, и ноль или более вхождений sub, за которым следует раздел, за которым следует открывающая скобка, до конца строки.

Ответ 2

Смотрите gitattributes manpage, раздел "Генерирование текста diff" и т.д. diff.csharp.xfuncname (поиск xfuncname).