Я столкнулся со странной проблемой с файлами git и zip.Мой скрипт сборки берет кучу HTML-страниц документации и упаковывает их в файл docs.zip. Затем я проверяю этот файл в git.
Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я перезапускаю скрипт сборки и получаю новый zip-файл, новый zip-файл имеет другой SHA1, чем предыдущий запуск.Мой скрипт сборки вызывает задачу ant zip.Однако ручной вызов macOSX zip из оболочки Mac OS X дает мне другой sha1, если я дважды заархивирую один и тот же каталог.
Прогон 1:
zip foo.zip *
openssl sha1 foo.zip
rm foo.zip
Прогон 2:
zip foo.zip *
openssl sha1 foo.zip
Прогон 1 и прогон 2 дают разные SHA1, даже если содержимое не меняется между прогонами.В обоих случаях zip распечатывает точно те же файлы, что и zip, но это не означает, что в файл zip включены какие-либо файлы для конкретной ОС, такие как .DS_Store.
Является ли алгоритм почтового индекса детерминированным?Если запустить на одном и том же контенте, он будет выдавать точно такие же биты?если нет, то почему?
Какие у меня есть варианты для архивирования файлов детерминированным способом?В архивном файле их тысячи, я не ожидаю, что эти файлы сильно изменятся.Я знаю, что git заархивирует все файлы, которые вы регистрируете, но мотивация их заархивировать - просто не допускать скопления их массы.