GitVersion (Azure DevOps)“Gitversion 无法确定将哪个分支视为开发分支”

Jak*_*ing 10 git gitversion devops azure-devops

通过 AzureDevops 运行 GitVersion,并在尝试在除 master 之外的任何分支(包括拉取请求分支等)上使用时收到以下错误消息;

到目前为止,我已尝试通过以下方式解决该问题:

  • 增加结账深度
  • 通过 next-version 设置手动指定下一个版本

错误:

 Gitversion could not determine which branch to treat as the development branch
Run Code Online (Sandbox Code Playgroud)

Git版本文件

mode: Mainline
branches: 
  master:
    regex: master
    increment: Patch
assembly-informational-format: '{MajorMinorPatch}+Branch.{BranchName}{PreReleaseTag}'
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
commit-message-incrementing: Enabled
tag-prefix: '[vV]'
ignore:
  sha: []
Run Code Online (Sandbox Code Playgroud)

YAML 管道

- task: gitversion/setup@0
  displayName: gitversion/setup
  inputs:
    versionSpec: '5.10.3'

- task: gitversion/execute@0
  displayName: gitversion/execute
  inputs:
    useConfigFile: true
    configFilePath: GitVersion.yml
Run Code Online (Sandbox Code Playgroud)

小智 26

我在我的一个存储库中遇到了同样的问题。出乎意料。我找不到发生这种情况的任何具体原因,但通过调查 GitVersion 的工作原理,我得出的结论是浅层提取是罪魁祸首。我通过告诉管道始终获取所有内容来解决这个问题。我把它放在我的管道模板中,所以希望这种情况不会再发生。

- steps:
  - checkout: self
    fetchDepth: 0
Run Code Online (Sandbox Code Playgroud)


小智 14

我找到了解决方案。管道设置 UI 具有浅获取设置。

  1. 编辑您的管道,选择...,然后选择触发器。
  2. 选择“YAML”、“获取源”,然后取消选中“浅层获取”选项,或设置所需的深度


LeG*_*GEC 1

您提到“增加签出深度”,这暗示在 CI 作业中使用“稀疏签出”或“浅存储库”选项(这是正确的吗?)

浅存储库的缺点是:运行 CI 作业的存储库没有您的存储库的历史记录。

如果您的工作需要找出当前分支领先了多少次提交master,那么它至少需要链接master到当前分支的历史记录部分。

最简单的方法是关闭稀疏/浅层选项,
另一种方法可以是显式“加深”分支的历史记录:

git fetch --deepen=100 origin master
git fetch --deepen=100 origin [active branch]
Run Code Online (Sandbox Code Playgroud)