我编写了一个函数,该函数使用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
答案 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