2010-05-30 4 views
7

Pourquoi sur le même ordinateur, le hachage SHA-1 du même fichier produit-il deux hachages SHA-1 complètement différents dans Windows et à l'intérieur d'un Git bash msysgit?Pourquoi un SHA-1 différent pour le même fichier sous windows ou linux?

L'algorithme SHA-1 n'était-il pas destiné à produire le même hachage pour le même fichier dans tous les systèmes d'exploitation?

Sur les fenêtres (avec HashCheck):
fichier Hello.txt
22596363b3de40b06f981fb85d82312e8c0ed511

à l'intérieur des fenêtres bash Git d'un msysGit (même machine, même fichier):

hachage objet git $ Hello.txt
3b18e512dba79e4c8300dd08aeb37f8e728b8dad

+1

terminaisons de ligne? ... –

+0

Si vous configurez Git correctement, les fins de ligne de fichier texte sont traitées correctement. Voir http://help.github.com/dealing-with-lineendings/ - NB Ceci s'applique aussi aux utilisateurs de * nix! –

Répondre

10

Git ajoute a header ("blob", la longueur, alors nul) avant de calculer le SHA-1. Voir this blog post pour savoir comment émuler le calcul en dehors de git.

+0

Merci beaucoup Matthew! L'histoire amusante est que hier j'ai reçu ma copie de Pro Git d'Amazon ;-) J'ai commencé à le lire en ligne exactement le moment après avoir lu votre réponse ici: aka MAINTENANT! –

Questions connexes