Inspire toi de git, par exemple : son utilisation des SHA1 est faite justement pour ne pas dépendre d'un quelconque identifiant ; tout est « contenu » dans le hash de la donnée que tu « adresses ». C'est une propriété très sympa pour éviter les collisions, comme tu as déjà noté.
Par contre, pour les humains, git a des références, qui sont comme une arborescence de fichiers, mais qui pointe vers un objet (SHA1) particulier, genre refs/heads/master, refs/tags/v1.0, ... Et quasiment sans contraintes sur la manière de les écrire. Quand on merge le contenu d'un autre dépôt, l'import des objets, indexés par leur hash, se fait sans problème ; par contre, pour les références (surtout les tags, quand on merge), il faudra résoudre « à la main » s'il y a conflit.
Mais je suis d'accord avec quelques autres sur le fait de ne pas se créer de faux problème trop tôt : si tu ne veux pas te soucier de la liaison référence <-> objet, reste sur du SHA1. Si tu penses par contre que la lisibilité des noms est importantes, fais-toi un système qui lie les deux, mais ne t'embête pas trop avec les règles de nommage et essaye plutôt de faire suivre des conventions. "Conventions over configuration", comme disent les américains.
[^] # Re: identifiants faciles?
Posté par benoar . En réponse au journal Small Issue Tracker. Évalué à 2.
Inspire toi de git, par exemple : son utilisation des SHA1 est faite justement pour ne pas dépendre d'un quelconque identifiant ; tout est « contenu » dans le hash de la donnée que tu « adresses ». C'est une propriété très sympa pour éviter les collisions, comme tu as déjà noté.
Par contre, pour les humains, git a des références, qui sont comme une arborescence de fichiers, mais qui pointe vers un objet (SHA1) particulier, genre refs/heads/master, refs/tags/v1.0, ... Et quasiment sans contraintes sur la manière de les écrire. Quand on merge le contenu d'un autre dépôt, l'import des objets, indexés par leur hash, se fait sans problème ; par contre, pour les références (surtout les tags, quand on merge), il faudra résoudre « à la main » s'il y a conflit.
Mais je suis d'accord avec quelques autres sur le fait de ne pas se créer de faux problème trop tôt : si tu ne veux pas te soucier de la liaison référence <-> objet, reste sur du SHA1. Si tu penses par contre que la lisibilité des noms est importantes, fais-toi un système qui lie les deux, mais ne t'embête pas trop avec les règles de nommage et essaye plutôt de faire suivre des conventions. "Conventions over configuration", comme disent les américains.