2014-11-17 111 views
3

我们刚刚更新了我们的TFS到TFS 2013更新4(TFS2013.4),并且我们在我们的仓库中使用了GIT子模块(我们更新了一些定制的MSBUILD魔术构建服务器)。TFS 2013.4使用GIT子模块构建失败

但是现在最新的更新,我们构建所有失败,此消息:

无法设置未知成员 “Microsoft.TeamFoundation.Build.Activities.Git.GitPull.CheckoutSubmodules”。

似乎微软已经为GIT子模块添加了某种支持,但它在我们的构建服务器上失败了。

有关如何解决此问题的任何想法?

+0

你所指的自定义msbuild魔法......你会说这部分的努力与此类似吗? http://stackoverflow.com/questions/19246151/git-submodule-fails-on-tfs-build?lq=1 – dtmland

回答

3

那么这是由我自己的愚蠢(大部分时间)造成的。

我想通过安装Visual Studio Update 4(VS2013.4)会为TFS使用的构建服务器安装相同的所需客户端库,但我错了。

只是更新TFS生成服务器到TFS2013.4解决了这个问题。

编辑:解决的唯一问题是更新子模块的'hackety MSBUILD魔术'再次工作,没有本地suppport。

似乎TFS服务器上的TFS2013.4与构建服务器上的TFS2013.2之间的版本不同,导致无法取回回收站,无论它是否具有子模块。

由于问题中的错误导致相信,它看起来像生成服务器本身开始支持子模块,但我一直无法做到这一点。

编辑2:

对于那些要求输入hackety的解决方案,我已经结束了使用在构建服务用户的配置文件文件夹中的纯文本文件_netrc,像这样:

machine <hostname1> 
login <login1> 

Git - How to use .netrc file on windows to save user and password

我也碰到了,当TFS生成服务帐户运行TFS的环境下建立,HOME环境变量不是问题所在等,所以我不得不手动设置:

下系统属性>环境变量

设置系统变量HOME%PROFILE%

+2

当你说“解决你的问题” - 你的意思是TFS2013。4现在为你更新你的子模块?或者您的意思是构建错误消失 - 因此您可以继续使用手动更新子模块的脚本? – dtmland

+0

@giulio没有TFS2013.4不会自动更新子模块,所以这是hacky'从MSBUILD'运行git命令的方式 –

+0

您可以详细说明您的hacky解决方案吗?我们正在尝试在我的工作中实现类似的功能,并在克隆过程中遇到许可问题。我们不想将某人的凭据硬编码到脚本中,所以我们有点不知所措。 – Quantumplation