Guest User

Untitled

a guest
Oct 24th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. #!/bin/bash
  2. set -euo pipefail
  3.  
  4. git fetch --tags
  5.  
  6. last_tag=$(git tag --sort=version:refname | grep -E '\d+\.\d+\.\d+' | tail -1)
  7.  
  8. a=( ${last_tag//./ } )
  9.  
  10. major=${a[0]}
  11. minor=${a[1]}
  12. patch=${a[2]}
  13.  
  14. case ${1:-} in
  15. major)
  16. ((major++))
  17. minor=0
  18. patch=0
  19. ;;
  20. minor)
  21. ((minor++))
  22. patch=0
  23. ;;
  24. patch)
  25. ((patch++));;
  26. *)
  27. echo "Usage: $0 [major|minor|patch]"
  28. exit 1
  29. ;;
  30. esac
  31.  
  32. git log --first-parent --format=%s $last_tag..HEAD > changes.txt
  33.  
  34. if [[ ! -s changes.txt ]]
  35. then
  36. echo "No changes since last tag $last_tag"
  37. exit 1
  38. fi
  39.  
  40. new_tag="$major.$minor.$patch"
  41. git tag "$new_tag" -F changes.txt
  42. echo "Changes since last tag $last_tag:"
  43. cat changes.txt | sed -E 's/(.*)/ \1/'
  44. echo "Tagged $new_tag ; use \`git push --tags\` to push to server"
Add Comment
Please, Sign In to add comment