繁体   English   中英

SemVer 和 GitFlow / 如何修补版本

[英]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能够很好地处理这个流程(我们目前无法改变)。

我们如何确保:

  1. 一旦我们发布了一个版本,那么基本分支上的以下提交至少会有一个小问题?
  2. 我们如何将发布分支上的修补程序带回 master?

如果使用传统的提交 ,可以设置自动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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM