Вот решение, которое я недавно нашел, когда искал решение той же проблемы.
Использование quilt :
dev-util/quilt-0.65::gentoo was built with the following:
USE="-emacs -graphviz" ABI_X86="(64)"
из gentoo, и следующий сеанс командной строки мне удалось безболезненно
преобразовать контекстную разницу в унифицированную разницу и настроить уровень полосы (опция -p в патче) с -p0 на -p1 (всегда используйте -p1, ребята, это сделает вашу и чужую жизнь намного проще!)
$ tar xf SDL2-2.0.8.tar.gz
$ cd SDL2-2.0.8
$ quilt new SDL2-2.0.8.unified.patch
$ quilt --quiltrc - fold -p 0 < ../SDL2-2.0.8.context.patch # arbitrary -p0 context diff I created for this exercise
$ quilt refresh
# your new -p1 unified diff can be found at SDL2-2.0.8/patches/SDL2-2.0.8.unified.patch
Ответ на этот вопрос здесь, поскольку это один из самых высоких результатов в Google для запросов, связанных с преобразованием различий в контекстах в унифицированный.
Должен работать в любом дистрибутиве, я просто сообщаю именно то, что имею для потомков.
Только что нашел «лучший» способ, но требует своего рода подготовительных работ. Для этого вам просто нужен сам файл патча. Вам потребуется patchutils
dev-util/patchutils-0.3.4::gentoo was built with the following:
USE="-test" ABI_X86="(64)"
$ $EDITOR SDL2-2.0.8.context.patch
# remove all lines like: 1 diff -cr SDL2-2.0.8/src/SDL.c SDL2-2.0.8.new/src/SDL.c (apparently not needed in current git)
# save and quit
$ filterdiff --format=unified < SDL2-2.0.8.context.patch > SDL2-2.0.8.unified.patch
# you can even do this inside vim with
:%!filterdiff --format=unified
Надеюсь, это поможет!