首页 > 解决方案 > Azure Pipeline git clone 无法处理 repo URL 中的空格

问题描述

使用 Azure Pipelines,我正在尝试在自托管 Windows 代理上执行“git clone --mirror”。

如果我在 MS 托管的代理上使用 bash,它会起作用。但是我的自托管代理现在没有 bash,所以我想改用脚本:

script: 'git clone --mirror https://dev.azure.com/MyCompany/Project%20Name/_git/MyRepo'

但我得到这个错误:

远程:TF200016:以下项目不存在:Project0Name。验证项目名称是否正确以及项目是否存在于指定的 Azure DevOps 服务器上。致命:未找到存储库“https://dev.azure.com/MyCompany/Project0Name/_git/MyRepo/”

在错误消息中,项目名称中的 URL 编码空格已替换为“0”。所以它找不到 repo,因为 URL 现在是错误的。

MS 托管代理和我的自托管代理都会出现此错误。

问题似乎与此处相同: Cannot clone git repository in command line script task in Azure DevOps Pipelines

为什么 URL 会以这种方式更改?我该如何解决它?

标签: gitazure-devops

解决方案


我在上面的链接中找到了答案。'%' 字符需要像这样转义:

script: 'git clone --mirror "https://dev.azure.com/MyCompany/Project%%20Name/_git/MyRepo"'

另外,我添加了双引号,但不确定这是否会有所不同。


推荐阅读