Любой рабочий инструмент двоичного различия реализует GDIFF(общий формат различий, НЕ графическая разница файлов)?
Я видел GDIFF(Generic Diff Format) в Википедии, и я хотел бы узнать, есть ли инструмент командной строки, реализующий этот стандарт. Теперь лучшее, что у меня есть, это LibXDiff, но это библиотека, мне понадобится дополнительная работа, чтобы она запустилась.
Я знаю, что когда дело доходит до двоичного различия, VCDIFF(xdelta и т. Д.) И bsdiff будут иметь более высокую степень сжатия, но в моем случае мне действительно нужна прямая компрессия. VCDIFF копирует что-либо до текущего окна (если бы я плохо читал по-английски об этой статье), и формат файла патча bsdiff был бы более сложным.
Обновить
Наконец, я обнаружил, что VCDIFF с xdelta3 действительно хорош и работает, когда переключено "отключить сопоставление небольших строк" и "отключить внешнюю декомпрессию", и у него есть довольно хорошая команда "printdelta", которая печатает очень полезную (для моего приложения) информацию, так что мне не нужно извлекать формат VCDIFF из файла патча.
1 ответ
Библиотека Javaxdelta реализует патчи xdelta и GDIFF. Это может использоваться как приложение командной строки как это:
# create patch
java -cp javaxdelta-2.0.1.jar:trove-1.0.2.jar com.nothome.delta.Delta source.file target.file patch.gdiff
# apply patch
java -cp javaxdelta-2.0.1.jar:trove-1.0.2.jar com.nothome.delta.GDiffPatcher unpatched.file patch.gdiff patched.file
Однажды я написал обертку для поддержки исправления каталогов (файлы GDIFF для каталогов упакованы в один ZIP-патч).