如何获得Git';s的最新稳定版本号?

如何获得Git';s的最新稳定版本号?,git,bash,sed,awk,grep,Git,Bash,Sed,Awk,Grep,我正在编写git-install.sh脚本: 要获取Git的最新稳定版本号,我需要: LSR_NUM=$(curl -silent http://git-scm.com/ | sed -n '/id="ver"/ s/.*v\([0-9].*\)<.*/\1/p') LSR_NUM=$(旋度-静默)http://git-scm.com/ |sed-n'/id=“ver”/s/*v\([0-9].\)我通常只使用maint分支。它只获得在其他分支(如pu或next)中经过严格测试的提交。

我正在编写git-install.sh脚本:

要获取Git的最新稳定版本号,我需要:

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

LSR_NUM=$(旋度-静默)http://git-scm.com/ |sed-n'/id=“ver”/s/*v\([0-9].\)我通常只使用
maint
分支。它只获得在其他分支(如
pu
next
)中经过严格测试的提交。它通常非常稳定,并且在任何给定时间都可能包含比最新官方版本更少的bug。

我只需要这样做:

git ls-remote --tags git://git.kernel.org/pub/scm/git/git.git | ...
<> P>公共存储库的位置基本上是固定不变的,所以我不会真的认为它是脆弱的。Git LS远程的输出也绝对不会改变。 版本号应该是最后一个标记;您可以使用以下内容获取它:

git ls-remote ... | tail -n 1 | sed 's@.*refs/tags/\(.*\)\^{}@\1@'
为此,我使用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 

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

我在freebsd/bash上使用这个:

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

由于kernel.org的响应不稳定,我使用并删除了“-rc”版本

curl-shttps://github.com/git/git/tags |grep-P“/git/git/releases/tag/v\d”| grep-vrc | 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

您可以继续当前的策略,但也可以通过解析
http://www.kernel.org/pub/software/scm/git/
和/或
http://git.kernel.org/?p=git/git.git;a=summary
查找其中的最大数字并检查是否匹配。很酷,但运行此脚本的人很可能尚未安装Git。:)也许我可以删掉这个URL:然后像丹尼斯·威廉姆森建议的那样找到最高的数字。或者,也许更好,这个URL首先列出了最新的发行号:我想我现在做的很好。它工作起来很好,很快很简单,而且我认为它很可靠。@MattDiPasquale:哦,嗯……是的,我想你可以选择这个许多地方显示信息,如丹尼斯建议的gitweb页面。这些页面与存储库的位置紧密相连,我怀疑gitweb是否会停止显示标签。@VictorSanchez:是的,我想它不会正确处理两位数的版本号。(我认为在我写答案的时候从来没有发生过这种情况;在那之前他们往往会翻滚。)如果你愿意的话,通过适当的排序进行处理。修复了它。另外,我将一个更新的版本保存在。改为github.com,因为kernel.org不稳定。
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