我有以下 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 。但!如果我尝试再次增加次要版本,我就无法像补丁一样工作了。
我和专业也有同样的故事。
我是新来的,所以有人知道这有什么问题吗?
该行为取决于 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默认配置
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
检查
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"
}
创建一个新分支
git checkout -b "TICKET-testing007"
检查
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"
}
使用上面的配置添加
GitVersion.yml
。
检查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
git add GitVersion.yml && git commit -m "TICKET-123: Added initial GitVersion.yml"
检查
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"
}
显示存储库中的文件
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
分支中的其他提交。这些行将创建一个带有分支名称的文件并将其提交。
num=0
((num++)) && echo "Test $num" >> $(git branch --show-current) && git add $(git branch --show-current) && git commit -m "Testing $num"
显示存储库中的文件
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
检查
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"
}
切换到主
git checkout main
检查
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"
}
将分支合并到主干
git merge TICKET-testing007
检查
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"
}