Team Foundation Server 2015 git repo,包含外部git服务器上的子模块

时间:2016-01-05 19:54:36

标签: git tfs git-submodules tfs2015

我已安装Team Foundation Server 2015。一切都很好,期待一件事。

我正在使用两个主要存储库(从团队项目创建)。第一个存储库的构建工作很好,但第二个存储库的构建存在问题。

第一个包含TFS 服务器本身的子模块。这里的构建效果很好。

第二个包含位于不同服务器上的子模块。当这个构建运行时,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 typegit更改为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

1 个答案:

答案 0 :(得分:2)

我无法重现您的问题,但我想更新我的测试以供您参考:

  1. 创建一个Git团队项目" git5"在TFS 2015中,创建一个新的解决方案" project2"并将其推送到TFS。

  2. 我使用Visual Studio Team Services作为外部git服务器。并创建一个Git团队项目" Git",以及推动一个项目" GitForVSO"在它。

  3. 添加项目" GitForVSO"项目" Project2"作为子模块,命令为:%Project2%>git submodule add https://xxx.visualstudio.com/DefaultCollection/_git/Git/

  4. 提交更改并将其推送到TFS。现在是团队项目" git5"看起来像下面的截图:

  5. enter image description here

    1. 创建一个空的构建定义并指定" Repository"标签如下面的截图:
    2. enter image description here

      • 如果我指定"用户名"和#34;密码"使用TFVS备用身份验证凭据,这也用于添加子模块。然后,我将获得一个成功的"获取来源"。
      • 如果我输错了"用户名"或者"密码"然后我会得到一个" 401"错误。

      enter image description here

      没有类似"太多重定向或身份验证重播的错误"在我的测试下。您可以查看我的步骤,看看是否有与您不同的内容。