Цветной рядный вывод git diff в моем терминале

Пожалуйста, обратите внимание, что этот вопрос не является дубликатом, а является продолжением вопроса "Как я могу получить разностное сравнение, когда я делаю" git diff "?", Этот вопрос ищет новую информацию и решение проблемы.

Кроме того, обратите внимание, что я ищу только те решения, чей вывод встроен в терминал, как по умолчанию git diff это - я не хочу ничего, что открывает внешнюю программу gui diff.

Прогресс на данный момент

Я последовал предложению из SO-вопроса, связанного выше, и поставил следующий исполняемый файл на моем пути:

#!/bin/bash

# side-by-side diff with custom options:
sdiff -w200 -l "$2" "$5" 

Затем я могу проверить это так, например:

GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1

и я получу вывод, как это:

Скриншот

Эта проблема

Как и предполагалось, это:

  • встроенный в терминал
  • параллельный вывод

Однако у него есть пара проблем:

  • Если изменилось более одного файла, он умирает после обработки первого файла, выводя ошибку fatal: external diff died, stopping at <filename>
  • Вывод не использует зеленый / красный цвета для отображения нового кода / удаления.

Есть ли способ исправить эти две проблемы с sdiff? Если нет, есть ли способ сделать это с /usr/bin/diff, встроенная программа git diff или другая терминальная программа? Мне все равно, как я достигну цели. Я просто хочу встроенный, рядом цвета с цветом.

1 ответ

Решение

[ЭТО] отлично сработало, даже с цветами. (Спасибо, @ github.com/cockroachdb/cockroach)

Если у вашего терминала есть проблемы с отображением цветов с помощью sdiff, вы, вероятно, захотите передать sdiff в colordiff, например:

sdiff -w200 -l "$2" "$5" | colordiff | grep -E ...
Другие вопросы по тегам