If cee157
peut faire référence à 2 ID de validation différents, tels que
cee157eb799af829a9a0c42c0915f55cd29818d4
et cee1577fecf6fc5369a80bd6e926ac5f864a754b
Git me préviendra-t-il si je tape git log cee157
? (ou Git 1.8.5.2 (Apple Git-48) me permet de taper git log cee1
).
Je pense que ce devrait être le cas, même si je ne trouve aucune source faisant autorité qui dit que ce serait le cas.
man gitrevisions
, ce qui implique au moins qu'un avertissement sera donné car il indique que vous pouvez nommer une révision avec son nom SHA1-1 complet ou "une sous-chaîne principale qui est unique dans le référentiel".git log c
... et voyez.git log abc
ditfatal: ambiguous argument 'abc': unknown revision or path not in the working tree.
même si j'ai un SHA1 unique commençant parabc
. Ne fonctionne pas avec 1-2-3 chiffres, 4 semble être le minimum. Testé sous Windows (1.8.1) et Mac (1.9.1).minimum_abbrev
une valeur de4
.Réponses:
Cela devrait vous donner quelque chose comme ceci:
Je viens de tester cela sur un vrai dépôt Git, en trouvant des commits avec des préfixes en double comme celui-ci:
Cela prend la liste des révisions dans
master
, supprime les 4 premiers caractères et jette le reste, compte les doublons et trie numériquement. Dans un mon référentiel relativement petit d'environ 1500 commits, j'ai trouvé pas mal de révisions avec un préfixe commun à 4 chiffres. J'ai choisi un préfixe à 4 chiffres car cela semble être la longueur légale la plus courte prise en charge par Git. (Ne fonctionne pas avec 3 chiffres ou moins, même s'il n'est pas ambigu.)Btw ce n'était pas une faute de frappe, je ne sais pas pourquoi le message d'erreur concernant SHA1 ambigu apparaît deux fois, quel que soit le nombre de SHA1 en double (essayé avec 2 et 3):
(Les deux sont
stderr
activés. En fait, toute la sortie est activéestderr
, rien n'est activéstdout
.)Testé sous Windows:
Je pense qu'il est sûr de dire que si votre version est> = 1.8.1, Git va vous avertir des doublons. (Il refusera de fonctionner avec des doublons.) Je suppose que des versions beaucoup plus anciennes fonctionnaient également de cette façon.
METTRE À JOUR
Lors du test, vous avez besoin d'un minimum de SHA1 à 4 chiffres, à cause de
int minimum_abbrev = 4
dans environment.c . (Merci @devnull pour l'avoir signalé!)la source
L'affiche originale déclare:
La source faisant autorité se trouve dans le code source,
get_short_sha1()
.Citant ceci :
et ceci :
De plus, des tests existent également pour s'assurer que la fonctionnalité fonctionne comme prévu.
la source