2010-05-30 17 views
7

¿Por qué en la misma máquina de cómputo el hash SHA-1 del mismo archivo produce dos hashes SHA-1 completamente diferentes en las ventanas y dentro de un msysgit Git bash?¿Por qué un SHA-1 diferente para el mismo archivo en windows o linux?

¿No se pretende que el algoritmo SHA-1 produzca el mismo hash para el mismo archivo en todos los sistemas operativos?

en Windows (con HashCheck):
Hello.txt Archivo
22596363b3de40b06f981fb85d82312e8c0ed511

Dentro de las ventanas de bash Git de un msysgit (misma máquina, mismo archivo):

$ git hash objeto Hello.txt
3b18e512dba79e4c8300dd08aeb37f8e728b8dad

+1

finales de línea? ... –

+0

Si configura Git correctamente, entonces las terminaciones de línea de archivo de texto se tratan correctamente. Ver http://help.github.com/dealing-with-lineendings/ - Nota: ¡Esto también se aplica a los usuarios de * nix! –

Respuesta

10

Git añade a header ("blob", la longitud, a continuación, null) antes de calcular el SHA-1. Consulte this blog post para saber cómo emular el cálculo fuera de git.

+0

Muchas gracias Matthew! La historia divertida es que ayer recibí mi copia de Pro Git de Amazon ;-) Comencé a leerla en línea exactamente en el momento después de haber leído su respuesta aquí: ¡también conocido como NOW! –

Cuestiones relacionadas