Si cee157
puede hacer referencia a 2 ID de confirmación diferentes, como
cee157eb799af829a9a0c42c0915f55cd29818d4
y cee1577fecf6fc5369a80bd6e926ac5f864a754b
¿Git me avisará si escribo git log cee157
? (o Git 1.8.5.2 (Apple Git-48) me permite escribir git log cee1
).
Creo que debería, aunque no puedo encontrar ninguna fuente autorizada que diga que lo haría.
man gitrevisions
, lo que al menos implica una advertencia, ya que establece que puede nombrar una revisión con su nombre SHA1-1 completo o "una subcadena principal que es única dentro del repositorio".git log c
... y mira.git log abc
dicefatal: ambiguous argument 'abc': unknown revision or path not in the working tree.
incluso si tengo un SHA1 único que comienza conabc
. No funciona con 1-2-3 dígitos, 4 parece ser el mínimo. Probado en Windows (1.8.1) y Mac (1.9.1).minimum_abbrev
un valor de4
.Respuestas:
Debería darte algo como esto:
Acabo de probar esto en un repositorio Git real, encontrando confirmaciones con prefijos duplicados como este:
Esto incluye la lista de revisiones
master
, recorta los primeros 4 caracteres y tira el resto, cuenta los duplicados y ordena numéricamente. En mi repositorio relativamente pequeño de ~ 1500 commits encontré bastantes revisiones con un prefijo común de 4 dígitos. Elegí un prefijo de 4 dígitos porque parece ser la longitud legal más corta admitida por Git. (No funciona con 3 dígitos o menos, incluso si no es ambiguo).Por cierto, esto no fue un error tipográfico, no sé por qué el mensaje de error sobre SHA1 ambiguo aparece dos veces, independientemente de la cantidad de SHA1 duplicado (intentado con 2 y 3):
(Ambos
stderr
activados. En realidad, toda la salida está activadastderr
, nada activadostdout
).Probado en Windows:
Creo que es seguro decir que si tu versión es> = 1.8.1, Git te avisará de los duplicados. (Se negará a operar con duplicados). Supongo que las versiones mucho más antiguas también funcionaron de esta manera.
ACTUALIZAR
Al probar esto, necesita un mínimo de SHA1 de 4 dígitos, debido a
int minimum_abbrev = 4
en environment.c . (¡Gracias @devnull por señalar eso!)fuente
El cartel original dice:
La fuente autorizada se puede encontrar en el código fuente,
get_short_sha1()
.Citando esto :
y esto :
Además, también existen pruebas para garantizar que la función funcione como se espera.
fuente