1

Я пишу сценарий PowerShell, который делает следующее.

  1. Осуществляет ли SVN- экспорт хранилища Subversion во временную папку
  2. Архивирует содержимое временной папки в 7-Zip архив
  3. Сравнивает MD5- хэш этого файла с целевым файлом
  4. Если хеш отличается (то есть файл изменился), перезапишите целевой архив этим

Я заметил кое-что любопытное. Хеши архивов 7z всегда различны, даже если содержимое самих файлов не изменилось. Предположительно, потому что метки времени разные?

Это по замыслу?

Как я могу получить одинаковые хэши 7-Zip архивов, если файлы не изменились?

3 ответа3

2

Вероятно, по замыслу. Я не смог найти никакой подробной документации по формату 7z, но некоторые форматы архива содержат такую информацию, как "дата добавления", указывающую, когда файл был добавлен в архив, и тому подобное.

Мои предложения: 1) не сравнивайте, просто замените старый файл; 2) используйте функцию обновления в 7z u для обновления старого файла на месте.

1

Если временные метки файла являются проблемой, вы можете попробовать установить параметр конфигурации SVN use-commit-times (в качестве параметра командной строки, --config-option config:miscellany:use-commit-times=yes , я думаю).

Он установит временные метки файла в соответствии с временем фиксации каждого файла, а не с текущим временем. Однако в документации не говорится, применяется ли этот параметр к svn export .

0

Вы можете создать манифест с хешем всего (кроме себя) и включить его в zip-файл. Извлеките и проверьте это, чтобы видеть, было ли обновление.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .