Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- set -euo pipefail
- git fetch --tags
- last_tag=$(git tag --sort=version:refname | grep -E '\d+\.\d+\.\d+' | tail -1)
- a=( ${last_tag//./ } )
- major=${a[0]}
- minor=${a[1]}
- patch=${a[2]}
- case ${1:-} in
- major)
- ((major++))
- minor=0
- patch=0
- ;;
- minor)
- ((minor++))
- patch=0
- ;;
- patch)
- ((patch++));;
- *)
- echo "Usage: $0 [major|minor|patch]"
- exit 1
- ;;
- esac
- git log --first-parent --format=%s $last_tag..HEAD > changes.txt
- if [[ ! -s changes.txt ]]
- then
- echo "No changes since last tag $last_tag"
- exit 1
- fi
- new_tag="$major.$minor.$patch"
- git tag "$new_tag" -F changes.txt
- echo "Changes since last tag $last_tag:"
- cat changes.txt | sed -E 's/(.*)/ \1/'
- echo "Tagged $new_tag ; use \`git push --tags\` to push to server"
Add Comment
Please, Sign In to add comment