GIT:发布的自动标记?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

如何在git中标记发布版本?

现在我有了每个版本,都是由内部版本号标识的,但是即使回购没有变化,它们也会增加。我的想法是让它自动生成在成功部署的中转服务器。例如:

  • 运行Hudson构建
  • 成功后,添加新标记,即1.0-1
  • 下一个成功构建添加下一个标记,1.0-2
  • 版本标签将显示在站点页脚中。

这需要:

  • 管理下一个版本号的Hudson
  • 或脚本将最后的标记存储在某个文件中。
  • 或解析git标记以确定最后一个
提问于
用户回答回答于

你说的更像是技术修订编号。

这与真正的应用程序版本不同,仍然应该独立于Hudson管理它。

用户回答回答于

我写这个是为了帮助逐步更新标签,例如1.0.1到1.0.2等等。

#!/bin/bash

#get highest tag number
VERSION=`git describe --abbrev=0 --tags`

#replace . with space so can split into an array
VERSION_BITS=(${VERSION//./ })

#get number parts and increase last one by 1
VNUM1=${VERSION_BITS[0]}
VNUM2=${VERSION_BITS[1]}
VNUM3=${VERSION_BITS[2]}
VNUM3=$((VNUM3+1))

#create new tag
NEW_TAG="$VNUM1.$VNUM2.$VNUM3"

echo "Updating $VERSION to $NEW_TAG"

#get current hash and see if it already has a tag
GIT_COMMIT=`git rev-parse HEAD`
NEEDS_TAG=`git describe --contains $GIT_COMMIT`

#only tag if no tag already (would be better if the git describe command above could have a silent option)
if [ -z "$NEEDS_TAG" ]; then
    echo "Tagged with $NEW_TAG (Ignoring fatal:cannot describe - this means commit is untagged) "
    git tag $NEW_TAG
    git push --tags
else
    echo "Already a tag on this commit"
fi

扫码关注云+社区