Teamcity-为代理端签出执行Git获取

Teamcity-为代理端签出执行Git获取,teamcity,gitversion,Teamcity,Gitversion,我正试图从我的构建代理执行完整的git获取,以便在TeamCity中使用 我已选择在TeamCity中使用代理签出选项,如 但是,当我在代理上执行签出时,我无法获取分支的完整git历史记录。我得到了与此相同的结果:-特别是: System.InvalidOperationException:在本地或远程都找不到“开发”或“主”分支 我猜这是因为TeamCity只检查了回购历史的一部分 Github问题有一个解决方法,即在每次构建开始时执行git fetch命令。这是TeamCity作为VCS根目

我正试图从我的构建代理执行完整的
git获取
,以便在TeamCity中使用

我已选择在TeamCity中使用代理签出选项,如

但是,当我在代理上执行签出时,我无法获取分支的完整git历史记录。我得到了与此相同的结果:-特别是:

System.InvalidOperationException:在本地或远程都找不到“开发”或“主”分支

我猜这是因为TeamCity只检查了回购历史的一部分

Github问题有一个解决方法,即在每次构建开始时执行
git fetch
命令。这是TeamCity作为VCS根目录的一部分可以本地支持的吗


提前感谢

在TeamCity上运行时,能否显示要传递给GitVersion的命令行参数?是否指定了
/output buildserver
选项?启用此功能后,GitVersion将执行分支正常化过程,以确保从存储库中获取所有必需的分支。

TeamCity能够从2017年起获取TeamCity的所有负责人,但需要通过配置设置启用

您可以通过以下方式配置Git插件以获取所有磁头:

teamcity.git.fetchAllHeads=true。

有关更多详细信息,请参见此处:


有人找到解决方案了吗?是的,我正在指定/output buildserver选项。它从来不会发生在最初的构建服务器上,只会发生在我刚刚启动的新构建代理上。如果这有关系的话,最初的一个与TeamCity在同一台机器上运行。运行Team City版本2017.2.3(build 51047),如果这很重要的话。如果我转到该构建目录并键入git fetch--all,然后运行gitversion,它会正常工作,但是,因为我们删除了新构建上的文件夹,这并不能解决问题-除非我们想将其作为构建步骤添加到我们拥有的每个项目中!显然,另一个构建服务器有它所缺少的东西。在新的构建服务器上运行最新的git版本:4.0.0+Branch.master.Sha.e715eb5dd515037d90a257f527e62442cae8c1c5。在旧的构建服务器上,它是/version工作之前的一个版本。根据Chocolate(choco版本gitversion),它们都是1.0.0.1,所以很明显,它们的功能不同这一事实很奇怪。实际上,这是我描述的一部分。规范化过程是为了确保所有git信息都在本地可用,以便能够断言正确的版本号。我感到困惑,我尝试添加一个构建步骤来执行git fetch--all(它试图弹出一个登录提示以获取凭据,因此它无法工作--不确定如何修复它),但是如果我转到构建失败的构建目录并在那里运行gitversion,我会得到一个错误。如果然后运行git fetch--all,那么git版本就可以了。我如何修复此问题,使其正常工作?(在这一点上,任何修复都是开放的-我有20个构建配置失败,还有一个正常工作(它不使用gitversion,因为在不签入更改的情况下无法重建,所以我在构建时放弃了它)所以,是的,在运行gitversion/output buildserver之后,我可以看到我只有分支x和remote/x作为唯一的分支。如果我git fetch--all,那么我会看到分支x和remote/x,remote/y,remote/z…(很多很多)。所以看起来getversion/output buildserver没有获取任何东西,我需要其他东西来启动它?