O hash de um arquivo 7-Zip de uma exportação SVN muda mesmo quando os arquivos não mudam. Isso é por design?

1

Estou escrevendo um script PowerShell que faz o seguinte.

  1. A exportação de um SVN de um Subversion para uma pasta temporária
  2. Zips o conteúdo da pasta temp em um arquivo 7-Zip
  3. Compara o hash MD5 desse arquivo com o de um arquivo de destino
  4. Se o hash for diferente (ou seja, o arquivo foi alterado), sobrescreva o arquivo de destino com este

Eu notei algo curioso. Os hashes dos arquivos 7z são sempre diferentes, mesmo que o conteúdo dos arquivos não tenha sido alterado. Presumivelmente porque os timestamps são diferentes?

Isso é por design?

Como posso fazer com que os hashes dos arquivos do 7-Zip sejam os mesmos se os arquivos não forem alterados?

    
por Conrad 17.09.2011 / 18:26

3 respostas

2

É provável que seja por design. Não encontrei nenhuma documentação detalhada no formato 7z, mas alguns formatos de arquivo contêm informações como "data de adição", indicando quando o arquivo foi adicionado ao arquivo, e assim por diante.

Minhas sugestões são: 1) não se incomode em comparar, apenas substitua o arquivo antigo; 2) use a função update em 7z u para atualizar o arquivo antigo in-loco.

    
por 17.09.2011 / 19:49
1

Se o registro de data e hora do arquivo for o problema, você pode tentar definir a opção de configuração do SVN use-commit-times (como uma opção de linha de comando, --config-option config:miscellany:use-commit-times=yes , eu acho).

Ele definirá os registros de data e hora do arquivo para o tempo de confirmação de cada arquivo, e não para o horário atual. No entanto, a documentação não diz se essa opção se aplica a svn export .

    
por 18.09.2011 / 04:00
0

Você poderia criar um manifesto com um hash de tudo (exceto ele mesmo) e incluí-lo no arquivo zip. Extraia e verifique para ver se houve uma atualização.

    
por 17.09.2011 / 23:09