首页 > 解决方案 > 在一个管道中检出多个分支

问题描述

我试图在一个管道中获得两个不同的分支,以便我可以比较目录。当我这样做时,它会起作用。

- checkout: self
- checkout: 'git://MyRepo/MyProject'
  path: master

当我需要检查分支以获取拉取请求时,问题就出现了,而不是服务器自动为拉取请求创建的合并分支。所以我这样做:

- checkout: 'git://MyRepo/MyProject@$(System.PullRequest.SourceBranch)'
  path: s
- checkout: 'git://MyRepo/MyProject@master'
  path: master

这里的问题是第二次签出将数据从源 ( $(Build.SourcesDirectory)) 目录移动到该master目录。

存储库当前位于“E:\vsts-buildser98-agent03_work\230\s\MyProject”,移至“E:\vsts-buildser98-agent03_work\230\master”。
存储库将位于“E:\vsts-buildser98-agent03_work\230\master”。

这导致构建失败,实际上在比较之前我需要做的所有事情。此外,Post-job: Checkout由于第一个目录不再存在,因此失败。

标签: azure-devopsyamlazure-pipelinesgit-checkout

解决方案


path您在步骤中指定了 a checkout,因此行为是正确的。

path为步骤指定 acheckout时,将使用该路径,相对于(Agent.BuildDirectory).

您可以在以下链接中查看更多结帐路径信息:

https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#checkout-path


推荐阅读