Il y a beaucoup de méthodes pour obtenir les dernières balises lorsque vous avez un repo git local.
Mais je veux obtenir la liste des dernières balises sur le repo à distance.
Je sais à propos de "git ls-remote", et tout va bien lorsque vous utilisez des balises comme x.y.z (où x, y, z sont des nombres). Mais lorsque les étiquettes ressemblent à "test-x.y.z" et "dev-x.y.z", j'ai remarqué qu'une grande quantité de balises "test" retirera toutes les nouvelles balises "dev", ce qui est incorrect.
Alors, comment aimerais-tu résoudre ça?
Utilisez-vous linux? Si oui, vous pouvez utiliser cette commande
git ls-remote --tags | grep -o 'refs/tags/dev-[0-9]*\.[0-9]*\.[0-9]*' | sort -r | head | grep -o '[^\/]*$'
Il vous montrera les 10 derniers tags (avec le nom dev-x.y.z )
UPD
Vous pouvez utiliser ce script bash pour obtenir les dernières balises:
#!/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
Ajoutez simplement dans le tableau les expressions régulières TAGS de votre choix, et vous obtiendrez les 10 dernières balises pour chacune d’elles. Si vous voulez avoir plus ou moins de tags, ajoutez simplement param -n à la commande head 'head -n 5' ou 'head -n 15'.
Au cas où. Enregistrez-le dans le dossier ~/bin (par exemple, avec le nom git_tags), puis ajoutez une autorisation exécutable (chmod + x git_tags), cela vous permettra d’exécuter ce script bash depuis tous les emplacements (tapez simplement git_tags).
un gars m'a dit cette commande:
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
et ce n'est pas la meilleure solution, mais il m'a ouvert les yeux sur l'ordre sort
.
mais j'aimerais connaître d'autres versions.
git ls-remote --tags | awk -F'/' '/[0-9].[0-9].[0-9].*/ { print $3}' | sort -nr | head -n1
Utiliser github api:
curl https://api.github.com/repos/user/repo/tags | jq '.[] .name' | sort -nr | head -n1
Ces deux vous obtiendrez la dernière balise, vous pouvez augmenter la liste en modifiant la valeur à l'indicateur n
pour le tuyau d'arrivée Disons, pour obtenir le top 10 des dernières listes head -n10
Avec Git 2.18 (T2 2018), "git ls-remote
" a appris une option pour "git ls-remote" a appris une option pour autoriser le tri de sa sortie sur Sur les noms de référence affichés.
Voir commit 1fb20df (09 avril 2018) de Harald Nordgren (HaraldNordgren
) .
(Fusion par Junio C Hamano - gitster
- in commit 6c0110f , 08 mai 2018)
ls-remote
: crée l'option '--sort
'Créez une option '
--sort
' pourls-remote
, basée sur celle defor-each-ref
.
Ceci par exemple permet aux noms de référence d'être triés par sémantique de version, de sorte quev1.2
soit trié avantv1.10
.
Vérifiez donc les options for-each-ref --sort
introduites dans Git 2.0 et 2.8 , car elles s’appliquent maintenant à git ls-remote --sort
.