Обратите внимание, что этот вопрос не является дубликатом, а является продолжением вопроса "Как я могу получить параллельный diff, когда я делаю "git diff"?". Этот вопрос ищет новую информацию и решение проблемы.
Кроме того, обратите внимание, что я ищу только решения, вывод которых встроен в терминал, как по умолчанию git 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 или другой терминальной программы? Мне все равно, как я достигну цели. Я просто хочу встроенный, бок о бок с цветом.