Цветной рядный вывод 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 ...