Necesito alguna forma de enumerar todas las etiquetas en mi sistema para la fecha en que se crearon, pero no estoy seguro de si puedo obtener esos datos a través de git-log. Ideas?
Necesito alguna forma de enumerar todas las etiquetas en mi sistema para la fecha en que se crearon, pero no estoy seguro de si puedo obtener esos datos a través de git-log. Ideas?
Respuestas:
La clasificación por fecha de creación de etiquetas funciona con etiquetas anotadas y ligeras:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsHice exactamente lo que necesitaba. ¡Gracias!
%(contents)para agregar anotaciones si es necesario, por ejemplogit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordatefunciona para etiquetas anotadas y no anotadas, pero --sort=taggerdatesolo parece funcionar con etiquetas anotadas. probado usandogit version 2.16.3
Git 2.8 (marzo de 2016) documenta otra opción que se remonta a git 1.4.4 (octubre de 2006) .
Ver commit e914ef0 (05 de enero de 2016) por Eric Wong ( ele828) .
(Fusionada por Junio C Hamano -gitster - en commit 108cb77 , 20 ene 2016)
Mira lo nuevo Documentation/git-for-each-ref.txt
Para los objetos de confirmación y etiquetado, los campos especiales
creatordateycreatorcorresponderán a la fecha o tupla de nombre-correo-fecha apropiada de los camposcommitterotaggersegún el tipo de objeto.
Estos están destinados a trabajar en una combinación de etiquetas anotadas y ligeras .
Entonces usando creatordate obras con etiquetas:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
O:
git tag --sort=-creatordate
Como detallo en " ¿Cómo ordenar las etiquetas git por orden de cadena de versión del formulario rc-XYZW? ", Puede agregar un orden de clasificación agit tag (desde Git 2.0 de junio de 2014).
Ese orden de clasificación incluye como nombre de campo (enumerado en git for-each-ref) taggerdate . Eso permite git tag --sort=taggerdate(mencionado por DarVar a continuación )
Como ejemplo, en el git/gitrepositorio mostrará la v2.10.0última etiqueta:
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
El orden predeterminado no ( git tag):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
También buena salida de (sin campo de fecha):
git log --tags --decorate --simplify-by-decoration --oneline
Para ver el historial completo con dependencias y confirmaciones lineales rayadas (solo eventos esenciales, como etiquetado y ramificación / fusión):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"y funciona mejor para mí.
git tag --sort=-taggerdate
De acuerdo con la página del manual, "Prefijo - para ordenar en orden descendente del valor".
git tagutiliza las mismas claves de clasificación que git-for-each-ref, que es donde se documentan las claves.
Este one-liner muestra fechas y etiquetas sin ningún problema.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Salida:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
Si no le gusta cómo se ordenan las etiquetas de forma predeterminada, puede ordenar por fecha con la opción --sort=creatordate, por ejemplo. Vea la respuesta de VonC para más detalles.
Para tener etiquetas anotadas y etiquetas livianas ordenadas por completo, según la fecha de confirmación, estoy usando:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Este comando enumerará todas las etiquetas y el ID del objeto de confirmación asociado, en orden cronológico.
Lo siguiente se basa en el compromiso, por lo que no importa si tiene información de fecha con el compromiso:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
La respuesta anterior de Josh Lee se basa en una fecha de etiqueta para obtener el orden correcto.
tac, podría cambiarlo a more. De todos modos su comando funcionó muy bien, ¡gracias!
Sobre la base de los métodos mencionados anteriormente, también quería ver la fecha de etiqueta real en la lista, por lo que mi versión en uso es:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'