tag - tipos de etiquetas en git
Git changelog: ¿cómo obtener todos los cambios hasta una etiqueta específica? (7)
¿Hay una forma o comando fácil de hacer que todos los git se comprometan con una etiqueta específica para generar un registro de cambios automático para un proyecto? Siempre etiqueto mis repositorios git con un número de versión como v0.1.0
y, por ejemplo, me gustaría que todos los confirmados etiqueten v0.1.0
.
He revisado los documentos, pero parece que no encuentro una opción o comando útil para ello: http://git-scm.com/docs/git-log (está inactivo en este momento, por cierto)
Por ejemplo:
$ git log --oneline --decorate
Muestra las etiquetas junto a las confirmaciones. Me gustaría lo mismo, pero solo hasta una etiqueta específica.
Hay una gema muy útil, la salida se escribe en markdown, agrega soporte de problemas y divide las confirmaciones por etiquetas
Para crear listas de cambios por etiquetas, usé este script:
#!/bin/bash
# Author:Andrey Nikishaev
echo "CHANGELOG"
echo ----------------------
git tag -l | sort -u -r | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
Se me ocurrió esta modificación del guión original. Esto maneja las etiquetas de versión correctamente.
#!/bin/bash
# Author:Andrey Nikishaev
echo "CHANGELOG"
echo ----------------------
git tag -l --sort=v:refname | tac | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l --sort=v:refname | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
Simplemente agregue tagname
a su comando y debería estar bien :) Me gusta el --graph
switch para visualizar las ramas que llevaron a esa etiqueta :)
Solo use el nombre de la etiqueta como un especificador de confirmación: git log --oneline --decorate v0.1.0
Una actualización del script sugerida por Creotiv para obtener una mejor clasificación de las etiquetas
#!/bin/bash
# Author:Andrey Nikishaev, Gunnar Lindholm
echo "CHANGELOG"
echo ----------------------
git for-each-ref --sort=''*authordate'' --format=''%(tag)'' refs/tags |tac |grep -v ''^$'' | while read TAG ; do
echo
if [ $NEXT ];then
echo [$NEXT]
else
echo "[Current]"
fi
GIT_PAGER=cat git log --no-merges --format=" * %s" $TAG..$NEXT
NEXT=$TAG
done
FIRST=$(git tag -l | head -1)
echo
echo [$FIRST]
GIT_PAGER=cat git log --no-merges --format=" * %s" $FIRST
Usted puede simplemente hacer:
git log --oneline --decorate v0.1.0
... para mostrar cada compromiso hasta e incluyendo v0.1.0. Por supuesto, git log
permite también restringir las confirmaciones mostradas en cualquiera de las formas en que git rev-list
entiende, por lo que si solo quisiera ver los cambios entre v0.0.9
y v0.1.0
, también podría hacer:
git log --oneline --decorate v0.0.9..v0.1.0
La salida alternativa que podría ser útil para este propósito es la de git shortlog
, que agrupa y resume las contribuciones de cada autor. Intenta, por ejemplo:
git shortlog v0.1.0