Я внедряю программу, которая дефлирует файл в Git BLOB и сохраняет его соответствующим образом.
У меня есть справочная реализация ruby , основанная на статье изgit book
Я пытаюсь реализовать это на ходу здесь
Однако я сталкиваюсь с проблемой, когда хранимые сжатые данные немного отличаются откаждая реализация.
vbindiff
показывает, что первые 2 байта идентичны (как запускается из этого тестового сценария ) (если я читаю это правильно).Эти байты хранят метод сжатия, а также флаги и флаги соответственно (согласно https://tools.ietf.org/html/rfc1950). Третий байт - это то место, где начинается различие, это либо идентификатор словаря, либо начало исходных входных данных.ближе к концу файла. Я предполагаю, что это, вероятно, разница в контрольной сумме ADLER32.
Кажется, что реализации zlib для go и Ruby не передают словарь в zlib по умолчанию (согласно go zlib source и ruby zlib source )
Данные выглядят одинаково.
Я не уверен, есть ли ошибка реализации в библиотекахили если я просто что-то упускаю.
Почему эти выходы отличаются?