无法在Azure DevOps Pipelines中的命令行脚本任务中克隆git存储库

时间:2019-04-24 15:09:54

标签: azure-devops azure-pipelines

我创建了azure devops管道,需要从另一个git存储库下载代码。根据我在某处阅读的推荐解决方案,我使用git clone命令添加了命令行脚本任务。不幸的是,这行不通。

我得到的错误是: 远程:TF200016:以下项目不存在:My0Test0Project。验证项目名称正确,并且该项目在指定的Azure DevOps服务器上存在。 致命:找不到存储库“ https://dev.azure.com/myCompany/My0Test0Project/_git/Service.Azure.Core/

我在Azure中的项目有空格,也许天蓝色中存在与此相关的错误?有人知道任何解决方法吗?

这是我已经尝试过的一些代码:

git -c http.extraheader="AUTHORIZATION: Basic bXl1c2VyOmxtNjRpYTYzb283bW1iYXp1bnpzMml2eWxzbXZoZXE2azR1b3V2bXdzbnl5b3R5YWlnY2E=" clone https://dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" clone https://dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
git clone https://oauth:lm64ia63oo7mmbazunzs2ivylsmvheq6k4uouvmwsnyyotyaigca@dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
git clone https://test:$(System.AccessToken)@dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core

6 个答案:

答案 0 :(得分:1)

原因是因为您需要添加系统访问令牌,以便Azure可以访问外部存储库。 (您的凭据需要访问该存储库)

注意:

我将URL用引号引起来,以转义URL字符串中的%符号,因为Powershell否则将其视为变量。

- powershell: |
    git clone -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" "https://{YOUR PIPELINE URL}"
    displayName: '{YOUR PIPELINE NAME}'

答案 1 :(得分:1)

我在 bash 脚本中遇到了同样的问题,并通过使用 % 转义 %% 字符解决了这个问题。

所以,你可以使用这个:

git clone https://test:$(System.AccessToken)@dev.azure.com/myCompany/My%%20Test%%20Project/_git/Service.Azure.Core

答案 2 :(得分:0)

您可以尝试将命令行任务更改为类似这样的内容吗?

git clone --single-branch --branch $(branchName) https://$(gitUserName):$(gitPassword)@dev.azure.com/myCompany/My%20Test%20Project/_git

其中$(gitUserName)和$(gitPassword)在以下位置配置为Alternate git credentials your Azure DevOps account

还想问一下git仓库URL的结尾: “ ... / _ git / Service.Azure.Core”,您正在尝试指定要克隆的文件夹还是工作目录?您也可以尝试使用之前的代码而无需结尾 https://dev.azure.com/myCompany/My%20Test%20Project/_git

答案 3 :(得分:0)

我在Powershell任务中尝试了此方法,并且有效 非常简单,只需使用

- powershell: |
   git config user.email "$(Build.RequestedForEmail)"
   git config user.name "$(Build.RequestedFor)"
   git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)"  clone  https://<org_Name>.visualstudio.com/<project_name>/_git/<repository_name>;
  displayName: "<your task display name>"

答案 4 :(得分:0)

我遇到了基本相同的问题...只是我试图从我的项目中的OWN存储库中克隆...而命令未完成或超时。当我直接在构建服务器上运行它而不是从buidpipe上运行时,这很好。

cd $(system.defaultworkingdirectory)
md dependencies
cd dependencies
git clone http://somecrazy.devops.server.thing/3rdPartyNuget/Newtonsoft.Json/_git/Nancy-For-Newton
rename Nancy-For-Newton Nancy

答案 5 :(得分:0)

这会在您的路径中包含空格字符时发生。

解决方法是不要在URL中使用%20,而应使用实际的空格字符。由于您的网址现在包含空格字符,因此请确保您的网址用双引号引起来。

所以你

git clone https://dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core/

应该是

git clone "https://dev.azure.com/myCompany/My Test Project/_git/Service.Azure.Core/"