2017-10-17 26 views
0

Question plutôt théorique, mais si quelqu'un connaît les implémentations pratiques, j'aimerais les entendre.git ID de validation personnalisée?

Comme nous le savons, git utilise SHA1 pour les identifiants de validation. Leur problème est que vous ne pouvez pas dire rapidement n'importe quoi en regardant simplement cette clé. Oui, vous pouvez trouver presque n'importe quoi sur ce git commit id avec l'aide git, mais vous ne pouvez rien dire à ce sujet par seulement regardant à elle. Et parfois, ce serait pratique. Si l'ID de validation était SHA1 + authorid + creation_time, il serait plus simple à utiliser.

Je suis sûr qu'il y a des raisons simples pour lesquelles git n'a pas ce type d'identifiant de validation, mais je ne sais pas lequel. Est-ce que quelqu'un sait?

+0

Il me semble qu'il ya beaucoup d'hypothèses sur ce qui est « plus facile à utiliser » , qui repose entièrement sur la configuration de votre outil. L'ID SHA est très destiné à répondre aux besoins techniques du système - c'est probablement la chose la moins conviviale à laquelle les utilisateurs sont exposés. Donc, pour ma part, je ne suis pas convaincu que le fait de mélanger des données relatives à l'utilisateur dans cet élément de données particulier est utile. –

Répondre

3

Il n'y a pas de raison fondamentale ou technique pour laquelle Git n'aurait pas pu ajouter cette information à chaque hash. Il n'ajoutera aucune fonctionnalité qui n'est pas déjà présente, puisque vous pouvez simplement créer une étiquette annotée dont vous contrôlez le nom, qui contient alors l'ID de hachage de la validation désirée, ainsi que les données auxiliaires que vous souhaitez insérer. En d'autres termes, ce que vous suggérez pourrait fonctionner, et peut-être supprimer le besoin de certaines étiquettes, au détriment des IDs de hachage encore plus encombrants. Que ce soit un bon compromis (une amélioration par rapport à la situation actuelle) est une question d'opinion. :-)

(Pour une description de ce que Git, ou tout autre VCS similaire, nécessite du hachage, voir chapter 4, Distributing Repositories, of my extremely-slow-progress book.)

+0

En outre, Git utilise le même type d'ID pour les arbres et les blobs, qui peuvent ne pas avoir d'auteur ou de temps de création définitif. –

+0

@DanielH: vrai. J'imagine que la partie centrale de Git pourrait complètement ignorer les données ajoutées, bien que lorsque Git acquiert la gestion SHA-256 (ce qui nécessite de conserver plusieurs tables d'index de hachage), il pourrait également devenir possible de conserver et de vérifier des données supplémentaires. (Mais les rendre de longueur variable est un peu gluant, en termes de parties sensibles à la vitesse.) – torek

+0

Il y aurait toujours un problème d'informations supplémentaires à encoder dans un hachage. Ainsi, l'approche implémentée dans Git - encoder tout ce dont vous avez besoin en utilisant des mots-clés de forme libre dans le message de validation lui-même, et ensuite les analyser quand vous en avez besoin - est plus raisonnable. Bien sûr, il n'a pas cette propriété "... juste en regardant un hachage" mais son chemin est plus flexible. – kostix