tag.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/bash
  2. # 脚本描述
  3. echo "请选择要更新的版本号类型:"
  4. echo "1. 更新主版本号(如 v1.0.0 -> v2.0.0)"
  5. echo "2. 更新测试版本号(如 v0.1.0 -> v0.2.0)"
  6. echo "3. 更新修订版本号(如 v0.0.1 -> v0.0.2)"
  7. echo "默认使用修订版本号,直接按回车执行。"
  8. # 读取用户输入
  9. read -p "请输入选项(1/2/3,默认 3):" choice
  10. # 设置默认值为 3(修订版本号)
  11. choice=${choice:-3}
  12. # 获取当前最新的 Tag
  13. latest_tag=$(git tag --sort=-version:refname | head -n1 2>/dev/null)
  14. echo "当前仓库最新tag版本号为:" $latest_tag
  15. # 如果没有找到 Tag,默认从 v0.0.0 开始
  16. if [ -z "$latest_tag" ]; then
  17. latest_tag="v0.0.0"
  18. fi
  19. # 提取版本号(去掉开头的 'v')
  20. version=${latest_tag#v}
  21. # 将版本号拆分为主版本号、测试版本号和修订版本号
  22. IFS='.' read -r major minor patch <<< "$version"
  23. # 根据用户选择更新版本号
  24. case $choice in
  25. 1)
  26. major=$((major + 1))
  27. minor=0
  28. patch=0
  29. ;;
  30. 2)
  31. minor=$((minor + 1))
  32. patch=0
  33. ;;
  34. 3)
  35. patch=$((patch + 1))
  36. ;;
  37. *)
  38. echo "无效选项,默认使用修订版本号。"
  39. patch=$((patch + 1))
  40. ;;
  41. esac
  42. # 拼接新的版本号
  43. new_tag="v${major}.${minor}.${patch}"
  44. echo "本次即将提交的tag版本号为:" $new_tag
  45. ## 打 Tag
  46. git tag "$new_tag"
  47. git push origin "$new_tag"
  48. # 输出最新的 Tag
  49. echo "新的 Tag 已创建:$new_tag"