Git: как заменить цвета ANSI для diff произвольными символами? - PullRequest
0 голосов
/ 03 мая 2020

Я хочу сохранить вывод

git diff HEAD^1 --word-diff=color

в файле уценки, чтобы "старое" слово (а) было помечено ~~old~~, в результате чего old new будет преобразовано после преобразования до HTML.

Конечно, нет ничего сложного в том, чтобы передать вывод через скрипт, который заменит управляющие коды ANSI тем, что мне нужно. Однако я хотел бы проверить, есть ли возможность как-то настроить его в git. Попытка просто указать нужные мне символы в git config приводит к ошибке, что неудивительно.

1 Ответ

0 голосов
/ 07 мая 2020

Я считаю, что добавление следующей строки в раздел [alias] вашей .gitconfig будет делать то, что вы хотите в linux системе:

diffmd = "!f() { git diff --word-diff=plain $1 |  sed 's/{+//g' | sed 's/+}//g'  | sed 's/\\[-/~~/g'  | sed 's/-\\]/~~/g' ; } ; f"

Вы бы тогда используйте его как git diffmd HEAD^.


Объяснение:

Здесь мы в основном обертываем определение и вызов функции bash в псевдоним git.

Опция git diff --word-diff=plain заменяет изменения цвета ANSI строками "[-", "-]", "{+" и "+}".

"$ 1" заменяется на «HEAD ^» в этом случае использования.

Мы используем sed, чтобы заменить «[-» и «-]» на «~~», а «{+» и «+}» заменить ничем.

...