Comment faire pour trier les étiquettes git par la chaîne de version afin de rc-X. Y. Z. W?
Quand je rentre une commande:
git tag -l
Je obtenir de tels résultats:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
Au lieu de cela, je veux:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
Comment il est possible de trier la liste en cours pour obtenir de tels résultats?
- Avec Git 2.0, vous allez bientôt être en mesure de faire une
git tag -l --sort=version:refname "rc-*"
, et obtenir le résultat que vous souhaitez. voir ma réponse ci-dessous - Git 2.0 est maintenant, et de toutes les réponses ci-dessous à l'aide de "trier" ne sont plus nécessaires.
--sort
est disponible pour git tag
Vous devez vous connecter pour publier un commentaire.
Utiliser la version de tri
ou pour de version git >= 2.0
brew install gsort
ensuite, vous pouvez modifier la ligne ci-dessus pourgit tag -l | gsort -V
et cela devrait fonctionner pour vous.brew install coreutils
pour obtenir legsort
de commande.brew install gsort
échec, en disant: il n'y a pas de paquetage nommégsort
.sort
inverse option de tri est-r
, pas -Vsort -Vf
vient vraiment pratique lorsque vous avez besoin de la casse. Je connais un grand projet de l'arbre qui abeta
etRC
capitalisation foiré dans leurs balises. Cela provoqueRC
à apparaître avant debeta
.Avec Git 2.0 (juin 2014), vous serez en mesure de spécifier un ordre de tri!
Voir s'engager b6de0c6, de s'engager 9ef176b, rédigé par Nguyễn Thái Ngọc Duy (
pclouds
):Donc, si vous avez:
Voici ce que vous obtiendrez:
Depuis s'engager b150794 (par Jacob Keller, git 2.1.0, août 2014), vous pouvez spécifiques que l'ordre par défaut:
robinst commentaires:
Avec Git 2.4 (T2 2015), la
versionsort.prerelease
variable de configuration peut être utilisé pour indiquer quev1.0-pre1
vient avantv1.0
.Voir s'engager f57610a par Junio C Hamano (
gitster
).Note (voir ci-dessous)
versionsort.prereleaseSuffix
est maintenant (2017) un alias obsolète pourversionsort.suffix
.git 2.7.1 (février 2016) permettra d'améliorer la sortie de
git tag
lui-même.Voir s'engager 0571979 (26 Jan 2016), et s'engager 1d094db (24 Jan 2016) par Jeff King (
peff
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 8bad3de, 01 Février 2016)Pour
git tag
, lorsque non spécifié, par défaut,%(refname:strip=2)
.Mise À Jour Git 2.12 (T1 2017)
Voir s'engager c026557, s'engager b178464, s'engager 51acfa9, s'engager b823166, s'engager 109064a, s'engager 0c1b487, s'engager 9ffda48, s'engager eba286e (08 Dec 2016) par SZEDER Gábor (
szeder
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 1ac244d, 23 janvier 2017)versionsort.prereleaseSuffix
est obsolète, alias pourversionsort.suffix
.--sort
n'existe pas sur git 1.9.1. (qui a travaillé sur la version 2.0.0)git config --global tag.sort version:refname
sort -V
. Le seul avantage que je vois, c'est que la transférabilité des systèmes qui n'ont pas GNU de tri. Mais si vous l'avez| sort -V
golfs mieux. Le truc, c'est: cette méthode de tri ne pas utiliser Git-des informations spécifiques (à la différence par exemple l'ordre topologique de l'objet pointé comme dans stackoverflow.com/questions/6900328/...)git tag --sort
méthode bien que.customtext-1.1.0
et1.1.0-customtext
. Sortes à la fois parfaitement, en supposant que vous suffit de choisir un format. Pas vraiment sûr si cela ne fonctionne pas si vous le mélanger, même si je pense comme une mauvaise idée 😉git tag --sort=-taggerdate
pour obtenir le récemment tagSelon cette réponse, sur les plates-formes qui ne le supportent pas
sort -V
comme Windows et OSX, vous pouvez utilisergit tag -l | sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4
Combinant les réponses déjà ici:
Référentiel Local
suffix=-
permettra d'éviter2.0-rc
à venir "après"2.0
--sort=-
mettra le plus haut numéro de version dans la partie supérieure.Dépôt distant
L'avantage, c'est qu'aucun des objets sont téléchargés à partir de la télécommande.
Pour plus d'info voir cette réponse.
versionsort.suffix
. +1.Pour obtenir une inversion de tri avec le
sort -V
approche:Adapter ce script perl, qui trie les balises qui ressemblent à des
client_release/7.2/7.2.25
, à votre système d'identification.J'ai fini par écrire un petit script shell pour simplifier cette tâche.
J'ai sauvé que
git-tags
dans mon$PATH
et exécutergit tags
chaque fois que j'ai besoin de la liste de balises.