在Azure DevOps存储库中的另一个项目中签出子模块

时间:2019-12-09 16:41:59

标签: git azure azure-devops git-submodules

我正在尝试从azure devops中的另一个项目中检出子模块。

steps:

- checkout: self
  submodules: true
  persistCredentials: true
  clean: true

在同一项目中签出另一个存储库是可行的。

目标

在存储库B中添加作为子模块存储库A。

Projects

但是我得到了错误:

Cloning into 'E:/build/Agent5/_work/16/s/.azuredevops'...
fatal: could not read Username for 'https://dev.azure.com': terminal prompts disabled
fatal: clone of 'https://dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA' into submodule path 'E:/build/Agent5/_work/16/s/.azuredevops' failed

如何在Azure DevOps存储库中使用YAML实现此目标?

4 个答案:

答案 0 :(得分:2)

在项目设置(左侧菜单的底部)中,默认情况下选中了“限制作业授权”选项。

将其关闭 解决了该问题。

Project setting pane, option that solved issue

仅供参考,我刚刚将其添加到steps:下的yaml中:

- checkout: self
  submodules: true

答案 1 :(得分:1)

我认为这意味着管道无法访问项目B中的回购B。但是我不认为文档说跨项目是可能的(尽管我确实注意到它在几个地方都说同一个Azure Devops Organization,而不是同一个Project) ,但也许可以,您可以点击以下链接:

https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view=azure-devops#authenticated-submodules

如果无法正常工作,则需要使用脚本方法获取PAT令牌并将其用于结帐:

https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view=azure-devops#alternative-to-using-the-checkout-submodules-option

答案 2 :(得分:1)

我已关闭组织级别的“限制作业授权范围”设置,但仍被阻止。事实证明,您还需要为每个单独的项目关闭它们。它不会被继承。

答案 3 :(得分:0)

添加子模块时,我发现.gitmodules中的网址不正确。

path = .azuredevops
url = https://dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA

应该是:

path = .azuredevops
url = https://ORGANIZATION@dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA