C'est sur le fonctionnement interne de l' git
.
J'ai lu le grand "Pro Git livre et d'apprendre un peu comment git est un travail en interne (tous sur le SHA1, des gouttes, des références, des arbres, s'engage, etc, etc). Assez intelligente à l'architecture, par la manière.
Ainsi, pour mettre en contexte, git références le contenu d'un fichier en tant que valeur SHA1, de sorte que son pouvoir savoir si un contenu a changé juste en comparant les valeurs de hachage. Mais ma question est plus précisément sur la façon git vérifie que le contenu de l'arbre de travail a changé ou pas.
L'approche naïve serez en pensant que, chaque fois que vous exécutez une commande en git status
ou similaire, il va chercher dans tous les fichiers du répertoire de travail, le calcul de la SHA1, et de le comparer avec celui qui a le dernier commit. Mais cela semble très inefficace pour de gros projets, comme le noyau Linux.
Une autre idée pourrait être de vérifier la date de dernière modification sur le fichier, mais je pense que git n'est pas stocker cette information (lorsque vous clonez un dépôt, tous les fichiers ont une nouvelle fois)
Je suis sûr que c'est de le faire sur un moyen efficace (git est vraiment très rapide), personne ne comment qui est atteint?
PD: il suffit d'ajouter une intéressante lien sur le git de l'index, indiquant spécifiquement que l'indice conserve des informations sur les fichiers d'horodateurs, même lorsque les objets de l'arborescence n'est pas.