GitVersion 配置文件中的默认模式

Default mode in GitVersion config file

我发现开始使用 gitversion 很困难。

我的问题是如何解释 config 文件。

我有 GitVersion.yml 配置文件,如下所示。

  1. 那么现在第二行的模式代表什么?如果没有为分支指定模式,是否会考虑默认模式?

  2. 在以下场景中,所有分支都指定了模式。那么这意味着什么呢?对于任何分支(master、release、feature、pull request、hotfix、support 和 develop),指定的各自模式(例如为 develop 指定的 ContinuousDeployment)是否会被考虑?分支级别的模式设置是否会覆盖第 2 行的设置?

  3. 最后,假设我创建了一个新分支 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: {}

回答您的问题:

  1. 这是所有分支的 "global" 版本控制模式(除非在 branches 部分下的分支配置中被覆盖)。
  2. 是的,在各个分支配置上指定的模式会覆盖第 2 行的全局设置。
  3. 在这种情况下(文档不是 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 根据您的要求计算版本。