Simulando en git , $Revision:$ de Subversion
Estamos en una charla con Yeradis, si sería posible simular algo como el id de $Revision:$ de SVN.
Particularmente, el numero de revisión automático me da igual, pero Yeradis es un 'plasta' con el tema,
nos hemos puesto los 2 y esto es lo que ha salido.
La idea , es usar los tags de git para hacer esa tarea
Lo primero es generar un tag numérico que usaremos como inicio. Para ello nada más simple que hacer:
git tag -a 1
Después creamos un fichero, llámalo deploy.sh. Lo colocamos en /git/bin para que esté disponible.
#revision tags must be an INTEGER value export tag=`git tag | sort -n | tail -1` text=`echo $tag | sed "s/\([^0-9]*\)\([0-9]*\)/\1/"` ; num=`echo $tag | sed "s/\([^0-9]*\)\([0-9]*\)/\2/"` ; rev=`echo $text$(($num + 1))` find ./ -name "*.c" -type f | while read file do awk '{gsub(/\$Revision:(.*)\$/, "$Revision: '$rev' $"); print}' $file >$file.$$ mv -v $file.$$ $file done git commit -am "$1" && git tag -a $rev -m "$1" && echo "Revision:" $rev |
Después en nuestro .gitconfig añadimos esta linea;
[alias] deploy = !sh deploy.sh |
Ahora , solamente tendremos que hacer;
git deploy "Nueva revision"
¿ Que hace esto ?
- Obtenemos el valor del ultimo tag, en este caso 1, y lo aumenta a 2
- Busca según el patrón "*.c", en este caso me interesa que busque solo los de código fuente de C, y reemplaza la cadena $Revision: $ por la nueva revisión , en este caso la 2., quedando como $Revision: 2$
- Realiza el commit
- Crea el tag con la nueva revisión.
No hay comentarios:
Publicar un comentario