开发者

How do I get Git's latest stable release version number?

开发者 https://www.devze.com 2023-01-01 08:40 出处:网络
I\'m writing a git-install.sh scrip开发者_Python百科t: http://gist.github.com/419201 To get Git\'s latest stable release version number, I do:

I'm writing a git-install.sh scrip开发者_Python百科t: http://gist.github.com/419201

To get Git's latest stable release version number, I do:

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

2 Questions:

  1. Refactor my code: Is there a better way programmatically to do this?

  2. This works now, but it's brittle: if the web page at http://git-scm.com/ changes, the line above may stop working.

    PHP has a reliable URL for getting the latest release version: Is there a site which simply outputs the latest stable version numbers of php and mysql?

    Is there something like this for Git? This comes close: http://www.kernel.org/pub/software/scm/git/


I'd just do this:

git ls-remote --tags git://git.kernel.org/pub/scm/git/git.git | ...

The location of the public repository is pretty much guaranteed to stay fixed, so I wouldn't really consider it brittle. The output of git-ls-remote will pretty definitely not change either.

The version number should be the last tag; you could grab it with something like this:

git ls-remote ... | tail -n 1 | sed 's@.*refs/tags/\(.*\)\^{}@\1@'


I use git-scm.com for this.

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

Very useful when you are on a new box and want to install latest stable git like so:

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

Maybe this would also be a good fallback for kernel.org or vice versa.


I generally just use the maint branch. It only gets commits that have been rigorously tested in other branches like pu or next. It is generally very stable and at any given time is actually likely to contain less bugs than the latest official release.


I am using this on freebsd/bash:

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


I use github.com and remove "-rc" versions due to kernel.org reponses unstably.

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 you'd like to check the result in 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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号