我正在编写一个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个问题:
重构我的代码:有没有更好的方法来执行此操作?
现在可行,但它很脆弱:如果 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/
答案 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
分支。它只会在pu
或next
等其他分支中进行严格测试。它通常非常稳定,并且在任何给定时间实际上可能包含 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