Git: аннотации в формате C ++ - PullRequest
0 голосов
/ 04 января 2019

Есть ли способ исключить только изменения форматирования в git?Я имею в виду, что инструменты git позволяют игнорировать изменения пробелов - это нормально.Я заинтересован в коде C ++ (но вопрос может быть обобщен на любой формат).Стандарт C ++ предоставляет некоторую свободу в форматировании кода.Но это может сделать ориентацию в истории git действительно запутанной, если есть изменения только в форматировании, а не в функциональности кода.

Я могу представить, что некоторые инструменты git работают над неким "нормализованным" кодом (возможно, выводом других инструментов - например, clang -format)

Возможно ли это как-то?Есть ли лучшие подходы?

(было бы неплохо, если бы инструменты diff / annotate / etc. Работали на «нормализованном символическом представлении» - я знаю, что это потребовало бы, чтобы Git «понял код» и не работал на обычномтекст, но я уверен, что это может быть решено сторонними "нормализаторами" - или, возможно, это не касается Git вообще, и это зависит от IDE - не знаю)

1 Ответ

0 голосов
/ 04 января 2019

было бы неплохо, если бы diff / annotate / etc.инструменты запускались бы по "нормализованному символическому представлению

. Предоставьте инструмент, который генерирует его из вашего фактического источника, и Git действительно выдаст вам нормализованную форму. Укажите diff=mydiff в качестве атрибута файла, либоотслеживается в опубликованной истории как запись .gitattributes или локально для вашего собственного использования в .git/info/attributes и настраивает diff.mydiff.textconv как ваш канонизатор, например, clang-format, который при задании аргумента имени файла дает результат на stdout точно так же, какgit likes. Функция построена для различий текста в двоичных файлах , но «двоичный» здесь действительно означает «формат, который неудобен для различий».

...