2017-10-13 5 views
2

Mon VCS a ces balisesGit Bash au regex dernier tag

0.0.3.156-alpha+2 
0.0.3.154 
0.0.3.153 
build-.139 
build-.140 
build-.142 
build-0.0.1.28 
build-0.0.1.29 
build-0.0.1.30 
build-0.0.1.32 

Je veux git describe --match "<regex>" pour obtenir l'étiquette dernière du formulaire number.number.number.number (il est donc 0,0. 3,154 dans ce cas)

J'ai essayé avec git describe --match "[0-9]*.[0-9]*.[0-9]*.[0-9]*$" mais il ne résulte en rien, ni faire ces motifs:

"[0-9]*.[0-9]*.[0-9]*.[0-9]+" 
"[0-9]*.[0-9]*.[0-9]*.[0-9]{1,}" 

J'ai besoin d'obtenir la dernière balise dans une autre version bump pour la prochaine version. Donc je pense à le faire automatiquement. S'il vous plaît laissez-moi savoir si je manque quelque chose

Merci

MISE À JOUR:

Dans mon fichier build.gradle j'ai une fonction pour obtenir un tag comme celui-ci (suivre la réponse @Marc):

version getVersionFromTag() 

def getVersionFromTag() { 
    def stdout = new ByteArrayOutputStream() 
    exec { 
     commandLine 'git', 'tag', '|' , 'grep', '^\([0-9]\+\.\?\)\+$', '|', 'sort' , '-nr', '|', 'head', '-1' 
     standardOutput = stdout 
    } 
    return stdout.toString().trim() 
} 

Ici, il donne des erreurs Unexpected Char '\' dans l'expression rationnelle ci-dessus. Par conséquent, je les transportèrent à devient '^([0-9]+.?)+$', il fonctionne très bien, mais dans mon dernier artefact, il n'a pas la version ajoutée au nom (c.-à-helloword.jar au lieu de helloword-0.0.3.154.jar

=> Ma question est de savoir comment dois-je mettre @ Marc est suggéré ?. commande à la fonction gradle correctement

+0

Si l'étiquette est la dernière balise créée, vous pouvez simplement utiliser 'git describe --abbrev = 0'. Ou est-ce que je manque quelque chose? – crea1

+0

Le motif après '--match' est glob, pas RegEx. Essayez 'git describe | grep ... ' – ElpieKay

+0

@ crea1 cette commande renverra la dernière balise seulement (ici' 0.0.3.156-alpha + 2'). Je veux une commande qui retourne la dernière balise du formulaire comme '0.0.3.154' – hydradon

Répondre

1

pour le test, je l'ai mis la sortie de votre git describe dans un fichier Ce fera:

cat file | grep '^\([0-9]\+\.\?\)\+$' | sort -nr | head -1 
0.0.3.154 

Supposons que vous avez créé des balises formatées irrégulières et que vous voulez utilisez ceux-ci aussi (comme votre build- -tags) pour trouver l'étiquette la plus haute:

sed -E 's/^[^0-9.]*//' | grep '^\([0-9]\+\.\?\)\+$' | sort -nr | head -1 
+0

Salut @Marc, votre commande fonctionne très bien dans la ligne de commande Git Bash. Ici, je veux mettre votre solution suggérée dans une fonction Gradle, mais il semble qu'il y ait quelques problèmes, s'il vous plaît voir mon post mis à jour. Je vous remercie – hydradon