Pregunta ¿Cómo obtener la lista de las últimas etiquetas en git remoto?


Hay muchos métodos para obtener las últimas etiquetas cuando tienes un repositorio de git local.

Pero quiero obtener una lista de las últimas etiquetas en el repositorio remoto.

Sé sobre "git ls-remote", y todo está bien cuando usas etiquetas como x.y.z (donde x, y, z son números). Pero cuando las etiquetas se ven como "test-x.y.z" y "dev-x.y.z" noté que una gran cantidad de etiquetas de "prueba" extraerá cualquier nueva etiqueta "dev", lo que no es correcto.

Entonces, ¿cómo te gustaría resolver esto?


32
2017-12-22 21:21


origen


Respuestas:


¿Usas linux? Si es así puedes usar este comando

git ls-remote --tags | grep -o 'refs/tags/dev-[0-9]*\.[0-9]*\.[0-9]*' | sort -r | head | grep -o '[^\/]*$'

Le mostrará 10 últimas etiquetas (con nombre dev-x.y.z)

UPD
Puedes usar este script bash para obtener las últimas etiquetas:

#!/bin/bash

TAGS=("dev-[0-9]*\.[0-9]*\.[0-9]*" "test-[0-9]*\.[0-9]*\.[0-9]*" "good-[0-9]*" "new [0-9][0-9][0-9]")

for index in ${!TAGS[*]}
do
    git ls-remote --tags | grep -o "refs/tags/${TAGS[$index]}" | sort -rV | head | grep -o '[^\/]*$'
done

Simplemente agregue las expresiones regulares TAGS array que desee, y obtendrá 10 etiquetas más recientes para cada una de ellas. Si desea obtener más o menos etiquetas, simplemente agregue param -n al comando head 'head -n 5' o 'head -n 15'.

Por si acaso. Guárdelo en la carpeta ~ / bin (por ejemplo, con el nombre git_tags), luego agregue el permiso ejecutable (chmod + x git_tags), esto le permitirá ejecutar este script bash desde cualquier lugar (solo escriba git_tags).


34
2017-12-23 11:52



un tipo me dijo ese comando:

git ls-remote -t repo.url.git | awk '{print $2}' | cut -d '/' -f 3 | cut -d '^' -f 1  | sort -b -t . -k 1,1nr -k 2,2nr -k 3,3r -k 4,4r -k 5,5r | uniq

y esta no es la mejor solución, pero abrió los ojos al comando sort.

pero me gustaría saber otras versiones.


8
2017-12-24 08:25



git ls-remote --tags | awk -F'/' '/[0-9].[0-9].[0-9].*/ { print $3}' | sort -nr | head -n1

Usando github api:

curl https://api.github.com/repos/user/repo/tags | jq '.[] .name' | sort -nr | head -n1

Estos dos obtendrán la última etiqueta, puede aumentar la lista cambiando el valor en n bandera para tubo de dirección. digamos, para obtener las 10 listas más recientes head -n10


5
2017-10-07 05:07



Con Git 2.18 (Q2 2018), "git ls-remote"aprendí una opción para" git ls-remote "aprendí una opción para permitir ordenar su salida basada en los nombres que se muestran.

Ver cometer 1fb20df (09 de abril de 2018) por Harald Nordgren (HaraldNordgren).
(Fusionado por Junio ​​C Hamano - gitster - en cometer 6c0110f, 08 de mayo de 2018) 

ls-remote: crear '--sort' opción

Crear un '--sort'opción para ls-remote, basado en el de for-each-ref.
  Esto p. permite que los nombres de las referencias se ordenen por semántica de la versión, de modo que v1.2 está ordenado antes v1.10.

Así que echa un vistazo a esos for-each-ref --sort opciones introducidas en Git 2.0 y 2.8, porque se aplican ahora a git ls-remote --sort.


0
2018-05-20 23:12