Git-descripte无法返回最近的带注释标记



我编写了一个函数,该函数使用git注释标记为我的项目创建新版本和/或增强semver样式的版本号。

我正在添加单元测试,注意到当几个git tag -a <tag> -m <msg>在一个序列中运行时,git describe --abbrev=0无法检索最新的标记,

我认为这与为同一提交创建这些标签有关,但我认为注释的标签不应该是这样。

预期行为:

git tag 1 -m v1; sleep 1; git tag 2 -m v2; sleep 1; git tag 3 -m v3
git describe --abbrev=0
3 

再现问题:

git tag 1 -m v1; git tag 2 -m v2; git tag 3 -m v3
git describe --abbrev=0
1

我发现在每次提交时强制执行一个注释标记更容易。

首先,用--abbrev=0检索最后一个带注释的标记,检查当前提交是否包含它,如果包含,则删除它

last_version=$(git describe --abbrev=0)
if git tag --contains $(git rev-parse HEAD) | grep -q "^$last_version$"; then
  git tag -d $last_version
fi
git tag $version -m $msg

最新更新