Мы пытаемся сделать автоматизацию, когда какая-то ветка объединяется в master и автоматически создает новую версию тега. Наше уникальное правило для этого: если ветвь, объединенная с мастером, исходит от функции, уровень MINOR будет увеличен, иначе уровень PATCH будет увеличен.
У меня уже есть этот скрипт:
#!/bin/bash
#latest version
VERSION=`git describe --abbrev=0 --tags`
# needs some if to determine if will increase minor or patch ...
VERSION_BITS=(${VERSION//./ })
VNUM1=${VERSION_BITS[0]}
VNUM2=${VERSION_BITS[1]}
VNUM3=${VERSION_BITS[2]}
VNUM3=$((VNUM3+1))
NEW_TAG="test$VNUM1.$VNUM2.$VNUM3"
echo "Updating $VERSION to $NEW_TAG"
GIT_COMMIT=`git rev-parse HEAD`
NEEDS_TAG=`git describe --contains $GIT_COMMIT 2>/dev/null`
if [ -z "$NEEDS_TAG" ]; then
git tag $NEW_TAG
echo "Tagged with $NEW_TAG"
git push --tags
else
echo "Already a tag on this commit"
fi
Но я не могу понять, как реализовать правило.
Например:
функциональный сценарий
last tag v1.0.0
last branch merged in master feature/my-amazing-feature
new tag v1.1.0
сценарий исправления
last tag v1.1.0
last branch merged in master hotfix/missing-some-element
new tag v1.1.1