1

我们正在尝试基于 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?
4

2 回答 2

0

如果您使用常规提交,您可以使用语义发布、(可选)commitizen、(可选)commitlint、 (可选) husky设置自动 semver 版本碰撞、发布和发布说明生成

基本上 master 分支可以是你的发布分支,所以任何登陆到 master 的提交都会触发语义发布,语义发布将查看自上一个版本以来的所有提交,看看它们是否需要发布/版本碰撞,如果他们这样做了将为您创建版本。

有关如何设置的说明,请参阅https://medium.com/faun/automate-your-releases-versioning-and-release-notes-with-semantic-release-d5575b73d986

于 2019-09-04T09:35:06.760 回答
0

我发现的最佳解决方案通过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
于 2021-12-28T22:55:23.677 回答