[英]SemVer and GitFlow / How to patch a release
我们正在尝试基于 semver 规范实现自动版本碰撞......理想情况下,我们将合并到 master 并在 CI 上生成新版本更新。
--------------development branch----
/ \
--/--base branch------------------------v1.1.0------
我们还没有,由于一些发布周期的限制,我们正在使用 gitflow 方法:
--------------release branch/v1.1.x----
/
--/--base branch----v1.2+.x------
每次我们削减一个发布分支,比如说,我们发布一个次要/主要更新,我们必须保持该版本开放以允许进行热修复(只有补丁最终会进入当前发布分支)......
现在,我们希望semver
能够很好地处理这个流程(我们目前无法改变)。
我们如何确保:
如果使用传统的提交 ,可以设置自动semver版本颠簸,发行和发行说明代与语义释放 ,(可选) commitizen ,(可选) commitlint ,(可选) 赫斯基
基本上master分支可以是您的release分支,因此落入master的任何提交都将触发语义释放,semantic-release将查看自上一版本以来的所有提交,并查看是否需要释放/版本转换(如果这样做)将为您创建发行版。
请参阅以获取有关如何进行此设置的说明https://medium.com/faun/automate-your-releases-versioning-and-release-notes-with-semantic-release-d5575b73d986
我发现的最佳解决方案是通过husky
使用提交后提示脚本。 这具有很大的灵活性,同时提醒您的团队保持您的版本是最新的。
下面是我使用的脚本。
# .husky/_/post-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
echo "Bump that version!"
exec < /dev/tty
PS3='Please enter your bump choice: '
options=("skip" "patch" "minor" "major")
select opt in "${options[@]}"
do
case $opt in
"skip")
break
;;
"patch")
break
;;
"minor")
break
;;
"major")
break
;;
*) echo "invalid option $REPLY";;
esac
done
if [[ "$opt" == "skip" ]];
then
echo "✓ Skipping..."
else
echo " ✓ Bumping version by $opt"
yarn standard-version -r $opt
git push --no-verify --follow-tags origin main
fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.