Sont Git de fichiers de pack de deltas plutôt que des instantanés?

L'une des principales différences entre Git et la plupart des autres systèmes de contrôle de version, c'est que les autres ont tendance à stocker commet une série de deltas - révisions entre un commit et le suivant. Cela semble logique, puisque c'est la plus petite quantité possible d'informations à stocker sur un commit. Mais plus le commettre l'histoire se, plus de calcul qu'il faut pour comparer les gammes de révisions.

En revanche, Git stocke un instantané complet de l'ensemble du projet dans chaque révision. La raison pour laquelle ce n'est pas faire de l'opération de la taille de croître de façon spectaculaire avec chaque commit est chaque fichier du projet est stocké en tant que fichier dans le sous-répertoire Git, nommé pour le hachage de son contenu. Donc, si le contenu n'a pas changé, le hash n'a pas changé, et que la livraison juste des points pour le même fichier. Et il y a d'autres optimisations ainsi.

Tout cela fait sens pour moi jusqu'à ce que je suis tombé sur cette information sur le pack de fichiers, dans lequel Git met régulièrement des données pour économiser de l'espace:

Afin d'économiser de l'espace, Git
utilise la packfile. C'est un
format où Git enregistre uniquement les
la partie qui a changé dans la deuxième
fichier, avec un pointeur vers le fichier, il est
semblable à.

N'est-ce pas, fondamentalement, de revenir à stocker les deltas? Si non, comment est-il différent? Comment est-ce à éviter de soumettre Git pour les mêmes problèmes que les autres versions de systèmes de contrôles ont?

Par exemple, Subversion utilise les deltas, et la restauration de 50 versions moyens de défaire 50 diffs, alors qu'avec Git, vous pouvez simplement saisir la appropriée de l'instantané. À moins que git stocke également 50 diff dans le packfiles... est-il un mécanisme qui dit "après quelques petit nombre de deltas, nous allons stocker un tout nouveau snapshot" afin de ne pas accumuler trop grandes d'une révision? Sinon, comment peut-Git éviter les inconvénients des deltas?

InformationsquelleAutor Nathan Long | 2011-03-03