Как заставить git-diff создавать "контекстный" формат diff? - PullRequest
9 голосов
/ 28 июня 2010

У меня есть репозиторий Git, из которого мне нужно создать файл патча в формате, отличном от формата git diff по умолчанию.Мой пример использования - у меня старая неуклюжая машина OSF / 1, на которой мне нужно применить патч, и программа /bin/patch не понимает унифицированных различий.

Если я использую GIT_EXTERNAL_DIFF=diff, надеясь, что затем я смогу использовать GIT_DIFF_OPTS=-c для запроса diff формата контекста, моя (современная) программа diff жалуется на дополнительные аргументы в своей командной строке:

diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282'
diff: Try `diff --help' for more information.
external diff died, stopping at [filename].

Установка GIT_EXTERNAL_DIFF=echo показывает, чтоGit, кажется, запускает внешнюю программу сравнения с:

$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>

Это сбивает с толку diff, который не хочет дополнительных аргументов.Есть ли простой способ указать git diff создать diff-формат в старом стиле?

(Мой текущий план - написать однострочный сценарий оболочки, который вызывает реальный diff просто$1 $2, но я надеюсь, что есть более неловкий путь.)

Ответы [ 2 ]

9 голосов
/ 25 октября 2012

Нет необходимости настраивать пользовательский difftool, просто используйте параметр -x:

$ git difftool -y -x "diff -c" | less

или настройте псевдоним, чтобы простая команда "git cdiff" выводила diff в стиле контекста:

$ git config --global alias.cdiff 'difftool -y -x "diff -c"'
$ git cdiff | less
5 голосов
/ 29 июня 2010

Сконфигурируйте difftool, чтобы делать то, что вы хотите:

$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE'
$ git difftool -y -t ctxdiff HEAD~4..HEAD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...