2010-05-30 6 views
2

J'écris un script git-install.sh: http://gist.github.com/419201Comment obtenir le dernier numéro de version de la version stable de Git?

Pour obtenir le dernier numéro de version stable de Git, je fais:

LSR_NUM=$(curl -silent http://git-scm.com/ | sed -n '/id="ver"/ s/.*v\([0-9].*\)<.*/\1/p') 

2 Questions:

  1. Refactor mon code: Y a-t-il un meilleur moyen de faire cela par programmation?

  2. Cela fonctionne maintenant, mais il est fragile: si la page Web à l'adresse http://git-scm.com/ changements, la ligne ci-dessus peut arrêter travail.

    PHP a une URL fiable pour obtenir la dernière version de sortie: Is there a site which simply outputs the latest stable version numbers of php and mysql?

    Y at-il quelque chose comme ça pour Git? Cela se rapproche: http://www.kernel.org/pub/software/scm/git/

+1

Vous pouvez continuer votre stratégie actuelle, mais aussi la santé mentale vérifier par analyse syntaxique 'http: // www.kernel.org/pub/logiciel/scm/git /' et/ou 'http: // git. kernel.org/? p = git/git.git; a = summary' pour le nombre le plus élevé et vérifiez la correspondance. –

Répondre

4

Je venais de le faire:

L'emplacement du dépôt public est à peu près garanti de rester fixe, donc je ne voudrais pas vraiment le considérer fragile. La sortie de git-ls-remote ne changera certainement pas non plus.

Le numéro de version doit être le dernier tag; vous pouvez le saisir avec quelque chose comme ceci:

git ls-remote ... | tail -n 1 | sed '[email protected]*refs/tags/\(.*\)\^{}@\[email protected]' 
+0

Cool, mais la personne qui exécute ce script n'a probablement pas encore installé Git. :) Peut-être que je pourrais gratter cette URL à la place: http://www.kernel.org/pub/scm/git/git.git/refs/tags/ Et juste trouver le nombre le plus élevé comme Dennis Williamson suggéré. Ou, peut-être mieux, cette URL liste d'abord le numéro de version le plus récent: http://www.kernel.org/pub/software/scm/git/docs/ Je pense que je vais le faire maintenant. Cela fonctionne, c'est rapide et facile, et je pense que c'est assez fiable. – ma11hew28

+0

@MattDiPasquale: Oh, mec. Eh bien ... oui, je suppose que vous choisissez parmi les nombreux endroits qui affichent les informations, comme les pages de gitweb suggérées par Dennis. Ceux-ci sont assez solidement liés à l'emplacement des dépôts, et je doute que gitweb arrête d'afficher des tags. – Cascabel

+0

A ce moment ... cette commande montre la version usée. –

0

En général, je viens d'utiliser la branche maint. Il obtient seulement des commits qui ont été rigoureusement testés dans d'autres branches comme pu ou next. Il est généralement très stable et à tout moment est susceptible de contenir moins de bogues que la dernière version officielle.

3

J'utilise git-scm.com pour cela.

latest_git_version=$(curl -s http://git-scm.com/ | grep "class='version'" | perl -pe 's/.*?([0-9\.]+)<.*/$1/') 
echo $latest_git_version 

Très utile lorsque vous êtes sur une nouvelle boîte et que vous voulez installer la dernière git stable comme ceci:

cd /tmp 
wget http://git-core.googlecode.com/files/git-${latest_git_version}.tar.gz 
tar xzf git-${latest_git_version}.tar.gz 
cd git-${latest_git_version} 
./configure && make && sudo make install 

Peut-être que ce serait aussi une bonne solution de repli pour kernel.org ou vice versa.

+0

Maintenant ... cassé aussi. :( –

+0

J'ai corrigé le jeu. De plus, je garde une version plus récente sur https://github.com/felixhummel/x/blob/master/git_from_source.sh – felixhummel

0

J'utilise ceci sur freebsd/bash:

git ls-remote --tags https://github.com/user/testpro.git | tail -n 1 | sed 's/.*refs\/tags\///g'

0

J'utilise github.com et supprimer les versions "" en raison de -Voiture RC Kernel.org reponses instablement.

curl -s https://github.com/git/git/tags | grep -P "/git/git/releases/tag/v\d" | grep -v rc | awk -F'[v\"]' '{print $3}' | head -1

Si vous souhaitez vérifier le résultat en bash;

GIT_INSTALL=$(curl -s https://github.com/git/git/tags | grep -P "/git/git/releases/tag/v\d" | grep -v rc | awk -F'[v\"]' '{print $3}' | head -1) 

if [[ "$GIT_INSTALL" =~ ^[0-9]*?\.[0-9]*?\.[0-9] ]] 
then 
    echo GIT_INSTALL=$GIT_INSTALL 
else 
    echo "Failed to get the latest stable git version. Quit." 
    exit 
fi 
+0

Changé sur github.com car kernel.org n'est pas stable. – kujiy

Questions connexes