Est git semi-secret arbre vide d'objet fiable, et pourquoi n'est-il pas un nom symbolique pour elle?

Git a bien connu, ou au moins un peu-de-bien-connu, arbre vide dont le SHA1 est:

4b825dc642cb6eb9a060e54bf8d69288fbee4904

(vous pouvez les voir dans toute repo, même un nouveau, avec git cat-file -t et git cat-file -p).

Si vous travaillez dur et sont très prudent, vous pouvez sorte de l'utilisation de cet arbre vide pour stocker un répertoire qui n'a pas de fichiers (voir réponse à Comment puis-je ajouter un répertoire vide dans un dépôt git), bien qu'il n'est pas vraiment une bonne idée.

Il est plus utile comme un argument pour git diff-tree, dont l'un des exemples les crochets ne.

Ce que je me demande,

  1. quelle est la fiabilité de ce—c'est à dire, certaines future version de git pas un git objet numéroté 4b825dc642cb6eb9a060e54bf8d69288fbee4904?
  2. Pourquoi n'est-il pas le nom symbolique de l'arbre vide (ou est-il un?).

(D'une façon rapide et sale pour créer un nom symbolique est de mettre le SHA1, par exemple, .git/Nulltree. Malheureusement, vous avez à faire cela pour toutes les pensions. Semble mieux de mettre juste le nombre magique dans les scripts, etc. J'ai une aversion générale à la magie des nombres.)

  • juste pour se souvenir de la valeur de hachage 😉 utiliser SHA1("l'arbre 0\0") = 4b825dc642cb6eb9a060e54bf8d69288fbee4904 (\0 est NUL personnage)
  • le git hash-object -t tree /dev/null méthode (à partir de VonC la réponse ci-dessous) a l'avantage de ne pas coder en dur SHA-1, dans le cas ou une future version de git commutateurs à SHA-2, par exemple. (Je ne vais pas tenter de prédire quand cela pourrait se produire. 🙂 Il serait plus facile de passer Mercurial SHA-2, depuis qu'ils ont quitté la place.)
  • de la cause, vous avez raison, mais c'est un bon morceau de "la Connaissance Inutile" et qu'elle est utile en tout cas pour quelqu'un d'autre?!
  • ressemble à l'algorithme de hachage de basculement peut se produire plus tôt que prévu. 🙂
  • En parlant de "l'avenir de la version de Git", je pense que vous serez intéressé dans mon dernier (Déc. 2017) modifier pour mon 2012 réponse: stackoverflow.com/revisions/9766506/7
InformationsquelleAutor torek | 2012-03-19