我已安装Team Foundation Server 2015。一切都很好,期待一件事。
我正在使用两个主要git存储库(从团队项目创建)。第一个存储库的构建工作很好,但第二个存储库的构建存在问题。
第一个包含TFS git服务器本身的子模块。这里的构建效果很好。
第二个包含位于不同git服务器上的子模块。当这个构建运行时,TFS无法获得这些子模块:
******************************************************************************
Starting: Get sources
******************************************************************************
Syncing repository: my_app (Git)
Checking out dbab6... to C:\TfsBuildAgents\Agent-UTP120W-1\_work\5\s with submodules
Object not found - no matching loose object (f8334...)
Prepare repository failed with exception.
(为简单起见,我在这里缩写了SHA'
以f8334...
开头的SHA是存在于外部git服务器上的子模块。我的猜测是这个错误:
找不到对象 - 没有匹配的松散对象
实际上与TFS尝试在远程服务器上使用的凭据有关。有没有办法查看TFS用于与远程服务器交互的凭据?有没有办法自己配置这些凭据?
我尝试将构建设置中的repository type
从git
更改为external git
,以便我可以指定凭据。但是,这会导致不同的错误:
******************************************************************************
Starting: Get sources
******************************************************************************
Syncing repository: my_app (Git)
Too many redirects or authentication replays
Prepare repository failed with exception.
Google导致此错误:
重定向或身份验证重播次数太多
以前的人似乎没有找到对这种情况有用的东西。有人有任何线索吗?
更新
看起来TFS 2015仅支持使用submodules that are in TFS itself, or are anonymously accessible的回购。但是,new feature request was created用于解决子模块的外部身份验证。
但是,在我的情况下,外部git服务器是匿名访问的。所以,不幸的是,我猜测问题在某种程度上取决于我的外部git服务器?作为参考,它是开源软件Bonobo Git server。
答案 0 :(得分:2)
我无法重现您的问题,但我想更新我的测试以供您参考:
创建一个Git团队项目" git5"在TFS 2015中,创建一个新的解决方案" project2"并将其推送到TFS。
我使用Visual Studio Team Services作为外部git服务器。并创建一个Git团队项目" Git",以及推动一个项目" GitForVSO"在它。
添加项目" GitForVSO"项目" Project2"作为子模块,命令为:%Project2%>git submodule add https://xxx.visualstudio.com/DefaultCollection/_git/Git/
提交更改并将其推送到TFS。现在是团队项目" git5"看起来像下面的截图: