【问题标题】:SemVer and GitFlow / How to patch a releaseSemVer 和 GitFlow / 如何修补版本
【发布时间】:2020-01-07 04:10:03
【问题描述】:

我们正在尝试根据 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?

【问题讨论】:

    标签: git git-flow release-management semantic-versioning semantic-release


    【解决方案1】:

    如果您使用conventional commits,您可以使用semantic-release、(可选)commitizen、(可选)commitlint、(可选)husky

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

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

    【讨论】:

    • 我们也使用常规提交,问题不在于how to generate releases or changelogs,问题是如何在 gitflow 中使用 semver?
    • @Hitmands 你只需要确保你有一个发布分支,功能分支会被合并 --> 你触发发布并更新版本 --> 修补程序? --> 新补丁发布。
    【解决方案2】:

    我发现的最佳解决方案是通过husky 使用post-commit 提示脚本。这具有很大的灵活性,同时提醒您的团队保持您的版本最新。

    下面是我使用的脚本。

    # .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
    

    【讨论】:

      猜你喜欢
      • 2022-06-22
      • 2019-06-07
      • 2023-02-14
      • 2021-05-19
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多