Git describe无法返回最近的带注释标签

时间:2015-11-22 03:38:56

标签: git shell unit-testing git-tag

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

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

我认为这与为同一次提交创建的这些标记有关,但我认为不应该是带注释的标记的情况。

预期行为:

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

1 个答案:

答案 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