practices - Ver quién eliminó la etiqueta git
git tags best practices (3)
Git realmente no registra lo que sucede durante el empuje. Este post git: ¿cómo ver los cambios debido a empujar? , sugiere que el reflog se actualice en un impulso, pero dudo que se registre una eliminación de etiqueta.
Puede deshabilitar la eliminación de etiquetas en una inserción (y es una buena idea): Deshabilitar la eliminación de etiquetas
¿Es posible encontrar quién eliminó una etiqueta git de un repositorio?
Supongamos que tienes un repositorio con contribuyentes. El repositorio tiene la etiqueta dev
y las versiones: v0.1.0
, v0.1.1
etc.
Alguien borra una etiqueta. ¿Cómo encontrarías a quién eliminó la etiqueta git?
Siguiendo este consejo de git sobre la restauración de etiquetas eliminadas , puedes hacer lo siguiente:
Encuentra todas las etiquetas inalcanzables en git fsck
:
git fsck --unreachable | grep tag
Y luego, para cada hash de confirmación en la salida, ejecute
git show COMMIT_HASH
Si desea una secuencia de comandos de shell para enumerar todas las etiquetas inalcanzables (eliminadas) con la persona relevante (Etiquetador), puede ejecutar el siguiente comando:
for commit in `git fsck --unreachable | grep tag | awk ''{ print $3 }''`; do
git show $commit | grep -E "^(tag|Tagger)";
done
EDITAR: Esto no responde a la pregunta real, pero le indica cómo ver a los autores de todas las etiquetas inalcanzables en el índice.
Tienes dos tipos de etiquetas:
- ligero
- anotado
Las etiquetas ligeras son solo metadatos para un commit. No tienen autor por sí mismos. Decir que el autor de una etiqueta es el autor de la confirmación es incorrecto, ya que cualquier otra persona podría haber etiquetado esa confirmación con una etiqueta ligera.
Las etiquetas anotadas son por otro lado como confirmaciones. Es por eso que las etiquetas anotadas también necesitan un mensaje cuando las creas. Tienen un autor, descripción, etc.
Por lo tanto, para conocer a los autores de sus etiquetas, debe tener una política de etiquetas anotadas. Pero, por lo que sé, no hay un historial de metadatos de git repo (directorio .git
). Esto significa que no puede saber quién eliminó una etiqueta / rama / etc, a menos que su proveedor git tenga un mecanismo para auditar / registrar / esto.