Gitversion 版本碰撞消息不起作用

问题描述 投票:0回答:1

我有以下 GiVersion.yml:

next-version: 1

mode: ContinuousDelivery

assembly-versioning-scheme: MajorMinorPatch

increment: Inherit

major-version-bump-message: '\+semver:\s?(breaking|major)'

minor-version-bump-message: '\+semver:\s?(feature|minor)'

patch-version-bump-message: '\+semver:\s?(fix|patch)'

branches: {}

ignore:

  sha: []

merge-message-formats: {}

我需要使用包含“+semver:补丁”等的提交消息来增加版本。它可以工作但是仅在第一次。

所以我有下一个行为。我的初始版本是 1.0.0 。我做了一些更改并使用“... +semver: patch”提交它们。现在我的版本是 1.0.1 。 好的。我们再试一次吧。一些更改 -> 使用“+semver: patch”提交。而且版本还是1.0.1

现在我正在尝试增加次要版本。相同的工作流程:一些更改 -> 使用“+semver:minor”提交。如果我检查最新版本,我将得到 1.1.0 。但!如果我尝试再次增加次要版本,我就无法像补丁一样工作了。

我和专业也有同样的故事。

我是新来的,所以有人知道这有什么问题吗?

git semantic-versioning gitversion
1个回答
0
投票

该行为取决于 GitVersion 配置。我使用下面的配置进行了测试,当创建

feature
分支时,补丁级别会自动递增。要点之一是将模式设置为
Mainline
。在一个功能分支中只能增加 1 倍补丁级别。在主分支中,可以通过提交消息无限期地递增
+semver: patch

如果不允许直接推入

main
分支,则需要创建一个分支,对其进行处理,并向
main
创建拉取请求。

mode: Mainline
branches:
  main:
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^master$|^main$
    source-branches:
    - develop
    - release
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: true
    pre-release-weight: 55000
  feature:
    tag: '{BranchName}'
    increment: Inherit
    regex: ^features?[/-]|^(?i)ticket-
    source-branches:
    - develop
    - main
    - release
    - feature
    - support
    - hotfix
    pre-release-weight: 30000
ignore:
  sha: []
merge-message-formats: {}

测试简单的 GitVersion 主线配置

  1. 创建一个全新的存储库

  2. 检查GitVersion默认配置

    gitversion -showconfig

    assembly-versioning-scheme: MajorMinorPatch
    assembly-file-versioning-scheme: MajorMinorPatch
    mode: ContinuousDelivery
    tag-prefix: '[vV]'
    continuous-delivery-fallback-tag: ci
    major-version-bump-message: '\+semver:\s?(breaking|major)'
    minor-version-bump-message: '\+semver:\s?(feature|minor)'
    patch-version-bump-message: '\+semver:\s?(fix|patch)'
    no-bump-message: '\+semver:\s?(none|skip)'
    legacy-semver-padding: 4
    build-metadata-padding: 4
    commits-since-version-source-padding: 4
    tag-pre-release-weight: 60000
    commit-message-incrementing: Enabled
    branches:
      develop:
        mode: ContinuousDeployment
        tag: alpha
        increment: Minor
        prevent-increment-of-merged-branch-version: false
        track-merge-target: true
        regex: ^dev(elop)?(ment)?$
        source-branches: []
        tracks-release-branches: true
        is-release-branch: false
        is-mainline: false
        pre-release-weight: 0
      main:
        mode: ContinuousDelivery
        tag: ''
        increment: Patch
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^master$|^main$
        source-branches:
        - develop
        - release
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: true
        pre-release-weight: 55000
      release:
        mode: ContinuousDelivery
        tag: beta
        increment: None
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^releases?[/-]
        source-branches:
        - develop
        - main
        - support
        - release
        tracks-release-branches: false
        is-release-branch: true
        is-mainline: false
        pre-release-weight: 30000
      feature:
        mode: ContinuousDelivery
        tag: '{BranchName}'
        increment: Inherit
        regex: ^features?[/-]
        source-branches:
        - develop
        - main
        - release
        - feature
        - support
        - hotfix
        pre-release-weight: 30000
      pull-request:
        mode: ContinuousDelivery
        tag: PullRequest
        increment: Inherit
        tag-number-pattern: '[/-](?<number>\d+)'
        regex: ^(pull|pull\-requests|pr)[/-]
        source-branches:
        - develop
        - main
        - release
        - feature
        - support
        - hotfix
        pre-release-weight: 30000
      hotfix:
        mode: ContinuousDelivery
        tag: beta
        increment: Patch
        prevent-increment-of-merged-branch-version: false
        track-merge-target: false
        regex: ^hotfix(es)?[/-]
        source-branches:
        - release
        - main
        - support
        - hotfix
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: false
        pre-release-weight: 30000
      support:
        mode: ContinuousDelivery
        tag: ''
        increment: Patch
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^support[/-]
        source-branches:
        - main
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: true
        pre-release-weight: 55000
    ignore:
      sha: []
    increment: Inherit
    commit-date-format: yyyy-MM-dd
    merge-message-formats: {}
    update-build-number: true
    
  3. 检查

    gitversion

    的输出
    {
      "Major": 0,
      "Minor": 1,
      "Patch": 0,
      "PreReleaseTag": "",
      "PreReleaseTagWithDash": "",
      "PreReleaseLabel": "",
      "PreReleaseLabelWithDash": "",
      "PreReleaseNumber": null,
      "WeightedPreReleaseNumber": 60000,
      "BuildMetaData": 0,
      "BuildMetaDataPadded": "0000",
      "FullBuildMetaData": "0.Branch.main.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "MajorMinorPatch": "0.1.0",
      "SemVer": "0.1.0",
      "LegacySemVer": "0.1.0",
      "LegacySemVerPadded": "0.1.0",
      "AssemblySemVer": "0.1.0.0",
      "AssemblySemFileVer": "0.1.0.0",
      "FullSemVer": "0.1.0+0",
      "InformationalVersion": "0.1.0+0.Branch.main.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "BranchName": "main",
      "EscapedBranchName": "main",
      "Sha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "ShortSha": "a806e6e",
      "NuGetVersionV2": "0.1.0",
      "NuGetVersion": "0.1.0",
      "NuGetPreReleaseTagV2": "",
      "NuGetPreReleaseTag": "",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 0,
      "CommitsSinceVersionSourcePadded": "0000",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
  4. 创建一个新分支

    git checkout -b "TICKET-testing007"

  5. 检查

    gitversion

    的输出
    {
      "Major": 0,
      "Minor": 1,
      "Patch": 0,
      "PreReleaseTag": "TICKET-testing007.1",
      "PreReleaseTagWithDash": "-TICKET-testing007.1",
      "PreReleaseLabel": "TICKET-testing007",
      "PreReleaseLabelWithDash": "-TICKET-testing007",
      "PreReleaseNumber": 1,
      "WeightedPreReleaseNumber": 1,
      "BuildMetaData": 0,
      "BuildMetaDataPadded": "0000",
      "FullBuildMetaData": "0.Branch.TICKET-testing007.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "MajorMinorPatch": "0.1.0",
      "SemVer": "0.1.0-TICKET-testing007.1",
      "LegacySemVer": "0.1.0-TICKET-testing007-1",
      "LegacySemVerPadded": "0.1.0-TICKET-testing0-0001",
      "AssemblySemVer": "0.1.0.0",
      "AssemblySemFileVer": "0.1.0.0",
      "FullSemVer": "0.1.0-TICKET-testing007.1+0",
      "InformationalVersion": "0.1.0-TICKET-testing007.1+0.Branch.TICKET-testing007.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "BranchName": "TICKET-testing007",
      "EscapedBranchName": "TICKET-testing007",
      "Sha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "ShortSha": "a806e6e",
      "NuGetVersionV2": "0.1.0-ticket-testing0-0001",
      "NuGetVersion": "0.1.0-ticket-testing0-0001",
      "NuGetPreReleaseTagV2": "ticket-testing0-0001",
      "NuGetPreReleaseTag": "ticket-testing0-0001",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 0,
      "CommitsSinceVersionSourcePadded": "0000",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
  6. 使用上面的配置添加

    GitVersion.yml

  7. 检查Git版本配置

    gitversion -showconfig
    。请注意,与默认值相比存在差异。

    assembly-versioning-scheme: MajorMinorPatch
    assembly-file-versioning-scheme: MajorMinorPatch
    mode: Mainline
    tag-prefix: '[vV]'
    continuous-delivery-fallback-tag: ci
    major-version-bump-message: '\+semver:\s?(breaking|major)'
    minor-version-bump-message: '\+semver:\s?(feature|minor)'
    patch-version-bump-message: '\+semver:\s?(fix|patch)'
    no-bump-message: '\+semver:\s?(none|skip)'
    legacy-semver-padding: 4
    build-metadata-padding: 4
    commits-since-version-source-padding: 4
    tag-pre-release-weight: 60000
    commit-message-incrementing: Enabled
    branches:
      main:
        mode: Mainline
        tag: ''
        increment: Patch
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^master$|^main$
        source-branches:
        - develop
        - release
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: true
        pre-release-weight: 55000
      feature:
        mode: Mainline
        tag: '{BranchName}'
        increment: Inherit
        regex: ^features?[/-]|^(?i)ticket-
        source-branches:
        - develop
        - main
        - release
        - feature
        - support
        - hotfix
        pre-release-weight: 30000
      develop:
        mode: Mainline
        tag: alpha
        increment: Minor
        prevent-increment-of-merged-branch-version: false
        track-merge-target: true
        regex: ^dev(elop)?(ment)?$
        source-branches: []
        tracks-release-branches: true
        is-release-branch: false
        is-mainline: false
        pre-release-weight: 0
      release:
        mode: Mainline
        tag: beta
        increment: None
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^releases?[/-]
        source-branches:
        - develop
        - main
        - support
        - release
        tracks-release-branches: false
        is-release-branch: true
        is-mainline: false
        pre-release-weight: 30000
      pull-request:
        mode: Mainline
        tag: PullRequest
        increment: Inherit
        tag-number-pattern: '[/-](?<number>\d+)'
        regex: ^(pull|pull\-requests|pr)[/-]
        source-branches:
        - develop
        - main
        - release
        - feature
        - support
        - hotfix
        pre-release-weight: 30000
      hotfix:
        mode: Mainline
        tag: beta
        increment: Patch
        prevent-increment-of-merged-branch-version: false
        track-merge-target: false
        regex: ^hotfix(es)?[/-]
        source-branches:
        - release
        - main
        - support
        - hotfix
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: false
        pre-release-weight: 30000
      support:
        mode: Mainline
        tag: ''
        increment: Patch
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        regex: ^support[/-]
        source-branches:
        - main
        tracks-release-branches: false
        is-release-branch: false
        is-mainline: true
        pre-release-weight: 55000
    ignore:
      sha: []
    increment: Inherit
    commit-date-format: yyyy-MM-dd
    merge-message-formats: {}
    update-build-number: true
    
  8. git add GitVersion.yml && git commit -m "TICKET-123: Added initial GitVersion.yml"

  9. 检查

    gitversion
    的输出。因为增量被定义为 Patch,所以 Mainline 模式会自动增量 Patch 级别。

    {
      "Major": 0,
      "Minor": 1,
      "Patch": 1,
      "PreReleaseTag": "testing007.1",
      "PreReleaseTagWithDash": "-testing007.1",
      "PreReleaseLabel": "testing007",
      "PreReleaseLabelWithDash": "-testing007",
      "PreReleaseNumber": 1,
      "WeightedPreReleaseNumber": 30001,
      "BuildMetaData": null,
      "BuildMetaDataPadded": "",
      "FullBuildMetaData": "Branch.TICKET-testing007.Sha.33495f9de45032da2d216b5a05329be5fe249209",
      "MajorMinorPatch": "0.1.1",
      "SemVer": "0.1.1-testing007.1",
      "LegacySemVer": "0.1.1-testing007-1",
      "LegacySemVerPadded": "0.1.1-testing007-0001",
      "AssemblySemVer": "0.1.1.0",
      "AssemblySemFileVer": "0.1.1.0",
      "FullSemVer": "0.1.1-testing007.1",
      "InformationalVersion": "0.1.1-testing007.1+Branch.TICKET-testing007.Sha.33495f9de45032da2d216b5a05329be5fe249209",
      "BranchName": "TICKET-testing007",
      "EscapedBranchName": "TICKET-testing007",
      "Sha": "33495f9de45032da2d216b5a05329be5fe249209",
      "ShortSha": "33495f9",
      "NuGetVersionV2": "0.1.1-testing007-0001",
      "NuGetVersion": "0.1.1-testing007-0001",
      "NuGetPreReleaseTagV2": "testing007-0001",
      "NuGetPreReleaseTag": "testing007-0001",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 1,
      "CommitsSinceVersionSourcePadded": "0001",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
  10. 显示存储库中的文件

    ls -la

    total 20
    drwxr-xr-x  3 user user 4096 May 13 16:13 .
    drwxr-xr-x 16 user user 4096 May 13 16:08 ..
    drwxr-xr-x  9 user user 4096 May 13 16:19 .git
    -rw-r--r--  1 user user  613 May 13 16:13 GitVersion.yml
    -rw-r--r--  1 user user   94 May 13 16:08 README.md
    
  11. 分支中的其他提交。这些行将创建一个带有分支名称的文件并将其提交。

    num=0
    ((num++)) && echo "Test $num" >> $(git branch --show-current) && git add $(git branch --show-current) && git commit -m "Testing $num"
    
  12. 显示存储库中的文件

    ls -la

    total 24
    drwxr-xr-x  3 user user 4096 May 13 16:25 .
    drwxr-xr-x 16 user user 4096 May 13 16:08 ..
    drwxr-xr-x  9 user user 4096 May 13 16:25 .git
    -rw-r--r--  1 user user  613 May 13 16:13 GitVersion.yml
    -rw-r--r--  1 user user   94 May 13 16:08 README.md
    -rw-r--r--  1 user user    7 May 13 16:25 TICKET-testing007
    
  13. 检查

    gitversion
    的输出。现在 GitVersion 不会增加 Patch 版本,而是增加 PreReleaseNumber。

    {
      "Major": 0,
      "Minor": 1,
      "Patch": 1,
      "PreReleaseTag": "testing007.2",
      "PreReleaseTagWithDash": "-testing007.2",
      "PreReleaseLabel": "testing007",
      "PreReleaseLabelWithDash": "-testing007",
      "PreReleaseNumber": 2,
      "WeightedPreReleaseNumber": 30002,
      "BuildMetaData": null,
      "BuildMetaDataPadded": "",
      "FullBuildMetaData": "Branch.TICKET-testing007.Sha.57d289efcec64b18c717145c866a5b0a9a722971",
      "MajorMinorPatch": "0.1.1",
      "SemVer": "0.1.1-testing007.2",
      "LegacySemVer": "0.1.1-testing007-2",
      "LegacySemVerPadded": "0.1.1-testing007-0002",
      "AssemblySemVer": "0.1.1.0",
      "AssemblySemFileVer": "0.1.1.0",
      "FullSemVer": "0.1.1-testing007.2",
      "InformationalVersion": "0.1.1-testing007.2+Branch.TICKET-testing007.Sha.57d289efcec64b18c717145c866a5b0a9a722971",
      "BranchName": "TICKET-testing007",
      "EscapedBranchName": "TICKET-testing007",
      "Sha": "57d289efcec64b18c717145c866a5b0a9a722971",
      "ShortSha": "57d289e",
      "NuGetVersionV2": "0.1.1-testing007-0002",
      "NuGetVersion": "0.1.1-testing007-0002",
      "NuGetPreReleaseTagV2": "testing007-0002",
      "NuGetPreReleaseTag": "testing007-0002",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 2,
      "CommitsSinceVersionSourcePadded": "0002",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
  14. 切换到主

    git checkout main

  15. 检查

    gitversion
    的输出。版本尚未增加。

    {
      "Major": 0,
      "Minor": 1,
      "Patch": 0,
      "PreReleaseTag": "",
      "PreReleaseTagWithDash": "",
      "PreReleaseLabel": "",
      "PreReleaseLabelWithDash": "",
      "PreReleaseNumber": null,
      "WeightedPreReleaseNumber": 60000,
      "BuildMetaData": 0,
      "BuildMetaDataPadded": "0000",
      "FullBuildMetaData": "0.Branch.main.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "MajorMinorPatch": "0.1.0",
      "SemVer": "0.1.0",
      "LegacySemVer": "0.1.0",
      "LegacySemVerPadded": "0.1.0",
      "AssemblySemVer": "0.1.0.0",
      "AssemblySemFileVer": "0.1.0.0",
      "FullSemVer": "0.1.0+0",
      "InformationalVersion": "0.1.0+0.Branch.main.Sha.a806e6e847435aabcb780580d524ef8c3a080af8",
      "BranchName": "main",
      "EscapedBranchName": "main",
      "Sha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "ShortSha": "a806e6e",
      "NuGetVersionV2": "0.1.0",
      "NuGetVersion": "0.1.0",
      "NuGetPreReleaseTagV2": "",
      "NuGetPreReleaseTag": "",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 0,
      "CommitsSinceVersionSourcePadded": "0000",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
  16. 将分支合并到主干

    git merge TICKET-testing007

  17. 检查

    gitversion
    的输出。现在补丁级别已自动增加。

    {
      "Major": 0,
      "Minor": 1,
      "Patch": 2,
      "PreReleaseTag": "2",
      "PreReleaseTagWithDash": "",
      "PreReleaseLabel": "",
      "PreReleaseLabelWithDash": "",
      "PreReleaseNumber": null,
      "WeightedPreReleaseNumber": 60000,
      "BuildMetaData": null,
      "BuildMetaDataPadded": "",
      "FullBuildMetaData": "Branch.main.Sha.57d289efcec64b18c717145c866a5b0a9a722971",
      "MajorMinorPatch": "0.1.2",
      "SemVer": "0.1.2",
      "LegacySemVer": "0.1.2",
      "LegacySemVerPadded": "0.1.2",
      "AssemblySemVer": "0.1.2.0",
      "AssemblySemFileVer": "0.1.2.0",
      "FullSemVer": "0.1.2",
      "InformationalVersion": "0.1.2+Branch.main.Sha.57d289efcec64b18c717145c866a5b0a9a722971",
      "BranchName": "main",
      "EscapedBranchName": "main",
      "Sha": "57d289efcec64b18c717145c866a5b0a9a722971",
      "ShortSha": "57d289e",
      "NuGetVersionV2": "0.1.2",
      "NuGetVersion": "0.1.2",
      "NuGetPreReleaseTagV2": "",
      "NuGetPreReleaseTag": "",
      "VersionSourceSha": "a806e6e847435aabcb780580d524ef8c3a080af8",
      "CommitsSinceVersionSource": 2,
      "CommitsSinceVersionSourcePadded": "0002",
      "UncommittedChanges": 0,
      "CommitDate": "2024-05-13"
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.