简体   繁体   中英

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

I'm writing a git-install.sh script: 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.

我在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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM