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

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

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

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


person svick    schedule 04.08.2010    source источник
comment
удалось получить хорошую конфигурацию? Я пробовал * .cs diff = csharp, но все еще получаю пространства имен. diff = java работает лучше ..   -  person elmarco    schedule 28.06.2012
comment
Да, у меня это работает, у вас достаточно свежая версия git? diff = csharp должен работать с версии 1.7.3.   -  person svick    schedule 29.06.2012
comment
1.7.10 вот, из debian unstable, попробую покопаться позже, пока с java все в порядке :)   -  person elmarco    schedule 29.06.2012
comment
Связанные - stackoverflow.com/questions/28111035/   -  person sashoalm    schedule 24.10.2016


Ответы (2)


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

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

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

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

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

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

*.tex   diff=tex

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

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

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

person svick    schedule 04.08.2010

См. страницу руководства по gitattributes, раздел «Создание текста различий» и, например, diff.csharp.xfuncname конфигурация (ищите xfuncname).

person Jakub Narębski    schedule 04.08.2010