0

我有一个分支,我们称之为 features/feature_1

自从它从 master 分支以来,它有 5 次提交。它的“增量”策略设置为无。如果我结帐大师,它是版本 3.18.1

如果我签出 features/feature_1,它的版本是 3.5.1。

我猜这是因为自从它从 master 分支以来已经发生了 5 次提交,但这没有任何意义。增量策略是“none”,所以它应该是 3.18.1,和它的源一样。

这里发生了什么?

编辑:我尝试了另一个实验。如果我 checkout -b from master,我只会得到 3.5.1 版本。没有任何新的提交。这是master获得版本 3.18.1 的时间。我无法调和这是怎么可能的。

assembly-versioning-scheme: MajorMinor
assembly-file-versioning-scheme: MajorMinor
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)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
branches:
  master:
    tag: ''
    increment: Minor
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^master$
    source-branches:
    - develop
    - release
    tracks-release-branches: false
    is-release-branch: true
    is-mainline: true
    pre-release-weight: 55000
  feature:
    tag: useBranchName
    increment: None
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^features?[/-]
    source-branches:
    - master
    - feature
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
  hotfix:
    tag: beta
    increment: None
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^hotfix(es)?[/-]
    source-branches:
    - master
    - feature
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
ignore:
  sha: []
commit-date-format: yyyy-MM-dd
merge-message-formats: {}
4

2 回答 2

2

我看到你在你的主分支配置中is-release-branch: true都设置了。is-mainline: true文档说is-release-branch应该为根据 GitFlow发布分支的分支设置,即release/1.0.0. 在 GitFlow 中,master不是发布分支。

我还看到您已经source-branches为您的master分支进行了配置。根据以下文档source

[您可以]通过告诉 GitVersion 可以从哪些类型的分支创建分支来向 GitVersion 提供有关 [您] 分支工作流程的提示。例如,默认情况下,功能分支配置为具有以下源分支:

source-branches: ['master', 'develop', 'feature', 'hotfix', 'support']

因此,在您的配置中,您是说master可以从developorrelease分支创建。我想你的意思是使用is-source-branch-for.

根据文档increment,也许您应该改用increment: Inherit 您的功能分支配置?

当 GitVersion 检测到需要增加 SemVer 时要增加的部分,例如标记后的提交:Major, Minor, Patch, None.

特殊值Inherit意味着 GitVersion 应该找到父分支(即当前分支的分支所在的分支),并将其值用于incrementprevent-increment-of-merged-branch-versiontracks-release-branches

现在,您可能希望 and 具有不同的行为prevent-increment-of-merged-branch-version,在这种情况下,您可以在分支配置部分tracks-release-branches覆盖这些值。feature

诚然,GitVersion 的文档不是很好或组织得很好。我发现我只需要稍微调整一下我的配置并尝试一下就可以真正理解它是如何工作的。我希望我至少可以帮助您朝着正确的方向前进。

于 2020-03-10T13:50:57.273 回答
0

对我们来说,它在主线模式下工作(这里命名主线develop)来定义发布分支,如下所示:

mode: mainline
assembly-file-versioning-format: '{Major}.{Minor}.{Patch}.{WeightedPreReleaseNumber}'
branches:
 develop:
    mode: ContinuousDeployment
    increment: Patch
    tag: unstable
    is-mainline: true
    pre-release-weight: 8000
  release:
    mode: ContinuousDeployment
    is-release-branch: false
    pre-release-weight: 1000
tag-pre-release-weight: 9500

这样,我们beta在构建发布分支时总是会得到 -versions,直到设置最终版本标签。beta.revision 将始终小于unstable.revision,并且最终标记版本将始终具有最高修订版。

这样,不稳定线的用户总是获得最新的开发版本,与发布分支是否有或多或少的提交无关(例如更改日志/文档改进)。

通常,根本不会有发布分支,只有 beta 版本的标签和开发中的最终版本。

示例需要进行一些调整, 因此v1.2.0-beta.1创建了一个发布分支。很好,v1.2.0-beta.2并被标记为最终v1.2.0版本,并且发布分支被合并回开发。v1.2.1不久之后发布了一个没有任何测试版 的修补程序。主线开发的示例 git 提交树 (图片来自https://git-school.github.io/visualizing-git/

于 2021-07-09T13:54:48.257 回答