1

我发现很难开始使用 gitversion。

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

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

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

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

  3. 最后,假设我创建了一个新的分支紧急修复(未在 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: {}
4

1 回答 1

3

要回答您的问题:

  1. 这是所有分支的“全局”版本控制模式(除非在该branches部分下的分支配置中被覆盖)。
  2. 是的,在单个分支配置上指定的模式会覆盖第 2 行的全局设置。
  3. 在这种情况下(并且文档不是 100% 清楚这就是发生的情况,但根据我的经验,我相信这是真的),因为你没有regex为你的分支配置指定任何 es,我相信 GitVersion将“回退”到默认值。功能分支的正则表达式是^features?[/-]. 基本上,一个可以选择以feature(单数或复数)开头的分支,后跟一个/-(并且未在正则表达式中明确指定),然后是其他任何内容。由于urgentfix不匹配任何其他分支默认正则表达式(根据 GitFlow),urgentfix因此被视为功能分支。

对于上面的第 3 点,我不清楚该branches部分是否是一个自由形式的部分,您可以在其中添加您想要的任何分支规范(例如添加一个urgentfix:部分),或者您是否必须使用“预定义”之一(其中都基于 GitFlow 分支)。

我想您可以尝试创建自己的配置部分,看看是否可行。

如果没有,您可能想要“劫持”您可能未使用的其他分支配置之一来实现您想要的。如果你走这条路,你可能需要覆盖配置中的其他设置,例如source-branches,以便 GitVersion 能够正确计算版本。当然,不要忘记使用适当的正则表达式,以便 GitFlow 知道将此配置用于urgentfix分支。

HTH。

更新

我刚刚在他们的文档中看到,除了众所周知的 GitFlow 或 GitHubFlow 之外,您还可以添加自己的分支配置。但是您有责任设置配置,以便 GitVersion 根据您的要求计算版本。

于 2020-03-10T14:10:36.593 回答