如何确定GitVersion选择特定基本版本的原因?

时间:2016-12-13 16:15:08

标签: gitversion

我正在使用GitVersion(版本3.5.3,如果它很重要),并得到一些意想不到的结果;特别是生成的版本具有意外的提交计数部分。查看日志我可以看到提交计数是正确计算的,但GitVersion使用的基本版本是错误的(或者至少不是我认为的那样)。

然而,GitVersion的日志文件不太有用,它只列出了一系列标签,然后是一长串的合并基础,最后它只是说它决定使用哪个基本版本。

GitVersion可以让我知道为什么选择那个特定的基本版本吗?

1 个答案:

答案 0 :(得分:0)

我不确定,你已经检查过了;但它解释了他们如何计算基本版本以及documentation

中的新版本

更新:从文档中添加了主要信息。

<强>建筑

GitVersion有三个不同的步骤来计算v3.0中的版本。

  • 如果标记了当前提交,则使用标记并添加构建元数据(排除提交计数)。其他两个步骤将不会执行
  • 评估一组策略以决定基本版本和 关于该版本的一些元数据。这些策略包括 HighestReachableTag,NextVersionInConfig,MergedBranchWithVersion, VersionInBranchName等
  • 选择最高的基本版本,使用新的基本版本 版本计算。

在视觉上它看起来像这样: enter image description here

基本版本策略

  • HighestTagBaseVersionStrategy - 查找来自的最高可到达标记 当前分支
  • VersionInBranchBaseVersionStrategy - 提取版本信息 从分支名称。例如release / 3.0.0将找到3.0.0
  • ConfigNextVersionBaseVersionStrategy - 从中​​返回版本 GitVersion.yaml文件
  • MergeMes​​sageBaseVersionStrategy - 查找合并中的版本号 消息。例如。 合并&#39;发布/ 3.0.0&#39;进入&#39; master&#39; 将返回 3.0.0
  • FallbackBaseVersionStrategy - 始终为新的返回0.1.0 存储库

每个策略都需要返回一个具有以下属性的BaseVersion实例

  • 来源 - 来源说明。例如`合并消息&#39;合并 &#39;释放/ 3.0.0&#39;进入&#39; master&#39;&#39;
  • ShouldIncrement - 某些策略应该具有该版本 增加,其他人不增加。例如 ConfigNextVersionBaseVersionStrategy 返回false, HighestTagBaseVersionStrategy 返回true
  • SemanticVersion - 基本版本策略的SemVer
  • BaseVersionSource - 来源的Sha。提交将从中计算 这个沙。可以为null(例如ConfigNextVersionBaseVersionStrategy 返回null)
  • BranchNameOverride - 当 useBranchName {BranchName} 用于 标签配置,这允许通过a更改分支名称 基础版。 VersionInBranchBaseVersionStrategy使用它来剥离 在第一个之前输出任何东西 - 或/。所以foo最终被评估了 如foo。如果有疑问,请使用null