我如何获得Git最新的稳定版本号?

时间:2010-05-30 23:53:45

标签: git bash sed awk grep

我正在编写一个git-install.sh脚本: http://gist.github.com/419201

要获得Git最新的稳定版本号,我会这样做:

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

2个问题:

  1. 重构我的代码:有没有更好的方法来执行此操作?

  2. 现在可行,但它很脆弱:如果 http://git-scm.com/的网页 变化,上面的行可能会停止 工作

    PHP有一个可靠的URL来获取 最新发布版本: Is there a site which simply outputs the latest stable version numbers of php and mysql?

    是否有类似的东西 Git的?这很接近:http://www.kernel.org/pub/software/scm/git/

5 个答案:

答案 0 :(得分:4)

我只是这样做:

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

公共存储库的位置几乎保证会保持固定,所以我不会认为它很脆弱。 git-ls-remote的输出肯定不会改变。

版本号应该是最后一个标签;你可以用这样的东西抓住它:

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

答案 1 :(得分:3)

我使用 git-scm.com

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

当你在一个新盒子上并希望安装最新稳定的git时非常有用:

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

也许这对kernel.org来说也是一个很好的后备,反之亦然。

答案 2 :(得分:0)

我通常只使用maint分支。它只会在punext等其他分支中进行严格测试。它通常非常稳定,并且在任何给定时间实际上可能包含 less 错误,而不是最新的正式版本。

答案 3 :(得分:0)

我在freebsd / bash上使用它:

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

答案 4 :(得分:0)

我使用github.com并删除&#34; -rc&#34;由于kernel.org的版本不稳定地回应。

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

如果您想以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