GitVersion 配置文件中的默认模式
Default mode in GitVersion config file
我发现开始使用 gitversion 很困难。
我的问题是如何解释 config 文件。
我有 GitVersion.yml 配置文件,如下所示。
那么现在第二行的模式代表什么?如果没有为分支指定模式,是否会考虑默认模式?
在以下场景中,所有分支都指定了模式。那么这意味着什么呢?对于任何分支(master、release、feature、pull request、hotfix、support 和 develop),指定的各自模式(例如为 develop 指定的 ContinuousDeployment)是否会被考虑?分支级别的模式设置是否会覆盖第 2 行的设置?
最后,假设我创建了一个新分支 urgentfix(未在 yaml 配置文件中指定),那么将考虑 ContinuousDelivery 模式,因为它是默认模式?
next-version: 6.0.1
mode: ContinuousDelivery
branches:
master:
mode: ContinuousDelivery
tag: ''
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^master
tracks-release-branches: false
is-release-branch: false
release:
mode: ContinuousDelivery
tag: beta
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^releases?[/-]
tracks-release-branches: false
is-release-branch: true
pre-release-weight: 1000
feature:
mode: ContinuousDelivery
tag: useBranchName
increment: Inherit
prevent-increment-of-merged-branch-version: false
track-merge-target: false
regex: ^features?[/-]
tracks-release-branches: false
is-release-branch: false
pull-request:
mode: ContinuousDelivery
tag: PullRequest
increment: Inherit
prevent-increment-of-merged-branch-version: false
tag-number-pattern: '[/-](?<number>\d+)[-/]'
track-merge-target: false
regex: ^(pull|pull\-requests|pr)[/-]
tracks-release-branches: false
is-release-branch: false
hotfix:
mode: ContinuousDelivery
tag: beta
increment: Patch
prevent-increment-of-merged-branch-version: false
track-merge-target: false
regex: ^hotfix(es)?[/-]
tracks-release-branches: false
is-release-branch: false
support:
mode: ContinuousDelivery
tag: ''
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^support[/-]
tracks-release-branches: false
is-release-branch: false
develop:
mode: ContinuousDeployment
tag: unstable
increment: Minor
prevent-increment-of-merged-branch-version: false
track-merge-target: true
regex: ^dev(elop)?(ment)?$
tracks-release-branches: true
is-release-branch: false
ignore:
sha: []
merge-message-formats: {}
回答您的问题:
- 这是所有分支的 "global" 版本控制模式(除非在
branches
部分下的分支配置中被覆盖)。
- 是的,在各个分支配置上指定的模式会覆盖第 2 行的全局设置。
- 在这种情况下(文档不是 100% 清楚会发生这种情况,但根据我的经验,我相信这是真的),因为你没有指定任何
regex
对于您的分支配置,我相信 GitVersion 将 "fallback" 设为默认值。功能分支的正则表达式是 ^features?[/-]
。基本上,一个分支可选择以 feature
(单数或复数)开头,然后是 /
或 -
(并且未在正则表达式中明确指定),然后是其他任何内容。由于 urgentfix
不匹配任何其他分支默认正则表达式(根据 GitFlow),urgentfix
被视为功能分支。
对于上面的第 3 点,我不清楚 branches
部分是否是自由格式部分,您可以在其中添加您想要的任何分支规范(例如添加 urgentfix:
部分),或者如果你必须使用 "pre-defined" 之一(它们都基于 GitFlow 分支)。
我想您可以尝试创建自己的配置部分,看看是否可行。
如果没有,您可能想要 "hijack" 您可能没有使用的其他分支配置之一来实现您想要的。如果你走这条路,你可能需要覆盖配置中的其他设置,例如 source-branches
,以便 GitVersion 能够正确计算版本。当然,不要忘记使用适当的正则表达式,以便 GitFlow 知道将此配置用于 urgentfix
个分支。
HTH.
更新
我刚刚在他们的文档中看到,除了众所周知的 GitFlow 或 GitHubFlow 之外,您还可以添加自己的分支配置。但是您有责任设置配置,以便 GitVersion 根据您的要求计算版本。
我发现开始使用 gitversion 很困难。
我的问题是如何解释 config 文件。
我有 GitVersion.yml 配置文件,如下所示。
那么现在第二行的模式代表什么?如果没有为分支指定模式,是否会考虑默认模式?
在以下场景中,所有分支都指定了模式。那么这意味着什么呢?对于任何分支(master、release、feature、pull request、hotfix、support 和 develop),指定的各自模式(例如为 develop 指定的 ContinuousDeployment)是否会被考虑?分支级别的模式设置是否会覆盖第 2 行的设置?
最后,假设我创建了一个新分支 urgentfix(未在 yaml 配置文件中指定),那么将考虑 ContinuousDelivery 模式,因为它是默认模式?
next-version: 6.0.1
mode: ContinuousDelivery
branches:
master:
mode: ContinuousDelivery
tag: ''
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^master
tracks-release-branches: false
is-release-branch: false
release:
mode: ContinuousDelivery
tag: beta
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^releases?[/-]
tracks-release-branches: false
is-release-branch: true
pre-release-weight: 1000
feature:
mode: ContinuousDelivery
tag: useBranchName
increment: Inherit
prevent-increment-of-merged-branch-version: false
track-merge-target: false
regex: ^features?[/-]
tracks-release-branches: false
is-release-branch: false
pull-request:
mode: ContinuousDelivery
tag: PullRequest
increment: Inherit
prevent-increment-of-merged-branch-version: false
tag-number-pattern: '[/-](?<number>\d+)[-/]'
track-merge-target: false
regex: ^(pull|pull\-requests|pr)[/-]
tracks-release-branches: false
is-release-branch: false
hotfix:
mode: ContinuousDelivery
tag: beta
increment: Patch
prevent-increment-of-merged-branch-version: false
track-merge-target: false
regex: ^hotfix(es)?[/-]
tracks-release-branches: false
is-release-branch: false
support:
mode: ContinuousDelivery
tag: ''
increment: Patch
prevent-increment-of-merged-branch-version: true
track-merge-target: false
regex: ^support[/-]
tracks-release-branches: false
is-release-branch: false
develop:
mode: ContinuousDeployment
tag: unstable
increment: Minor
prevent-increment-of-merged-branch-version: false
track-merge-target: true
regex: ^dev(elop)?(ment)?$
tracks-release-branches: true
is-release-branch: false
ignore:
sha: []
merge-message-formats: {}
回答您的问题:
- 这是所有分支的 "global" 版本控制模式(除非在
branches
部分下的分支配置中被覆盖)。 - 是的,在各个分支配置上指定的模式会覆盖第 2 行的全局设置。
- 在这种情况下(文档不是 100% 清楚会发生这种情况,但根据我的经验,我相信这是真的),因为你没有指定任何
regex
对于您的分支配置,我相信 GitVersion 将 "fallback" 设为默认值。功能分支的正则表达式是^features?[/-]
。基本上,一个分支可选择以feature
(单数或复数)开头,然后是/
或-
(并且未在正则表达式中明确指定),然后是其他任何内容。由于urgentfix
不匹配任何其他分支默认正则表达式(根据 GitFlow),urgentfix
被视为功能分支。
对于上面的第 3 点,我不清楚 branches
部分是否是自由格式部分,您可以在其中添加您想要的任何分支规范(例如添加 urgentfix:
部分),或者如果你必须使用 "pre-defined" 之一(它们都基于 GitFlow 分支)。
我想您可以尝试创建自己的配置部分,看看是否可行。
如果没有,您可能想要 "hijack" 您可能没有使用的其他分支配置之一来实现您想要的。如果你走这条路,你可能需要覆盖配置中的其他设置,例如 source-branches
,以便 GitVersion 能够正确计算版本。当然,不要忘记使用适当的正则表达式,以便 GitFlow 知道将此配置用于 urgentfix
个分支。
HTH.
更新
我刚刚在他们的文档中看到,除了众所周知的 GitFlow 或 GitHubFlow 之外,您还可以添加自己的分支配置。但是您有责任设置配置,以便 GitVersion 根据您的要求计算版本。