我正在使用 Git。我的环境是 Azure DevOps。我有一个 vsts 构建代理。 我正在尝试仅将一个文件夹从我的存储库 pull 到构建代理上。我正在使用 powershell。 我尝试过的是:
git init
git remote add origin https://MYUSERNAME:MYPERSONALACCESSTOKEN@mytfs-git-project-url
git config core.sparseCheckout true
Set-Content .git\info\space-checkout "myfolder/*" -Encoding Ascii
git pull origin master
我收到用户名错误导致身份验证失败的消息。我可以使用以下命令在本地克隆它
“git clone https://MYPERSONALACCESSTOKEN@tfs-git-url”
,但是如果我在 Azure DevOps Powershell 上尝试相同的操作,则会出现无法读取用户名错误。我确实尝试了 stackoverflow 的建议,但没有成功。如有任何新建议,我们将不胜感激。
最佳答案
我对您的脚本进行了一些更改,当从同一 Azure DevOps 组织下载源代码时,它可以在我的环境中运行。变化如下:
- 我使用
sparse-checkout set
命令,而不是依赖手动设置稀疏配置,它会自动设置其他所需的标志和配置。 - 我没有(不安全地)在克隆 URL 中设置安全 token ,而是将变量作为
extraheader
传入。 - 我没有依赖 PAT(这在本地很好),而是从构建/发布作业中获取访问 token 。
这将导致以下任务:
steps:
- task: PowerShell@2
displayName: 'Sparse Checkout'
inputs:
script: |
git init
git remote add origin https://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1d726f7a5d79786b337c67686f78337e7270" rel="noreferrer noopener nofollow">[email protected]</a>/org/project/_git/repo
git config core.sparseCheckout true
git sparse-checkout set "Folder/*"
git -c http.extraheader="AUTHORIZATION: Bearer $env:System.AccessToken" pull origin master
workingDirectory: '$(System.ArtifactsDirectory)'
env:
System.AccessToken: $(System.AccessToken)
在 UI 中设置这些输入也有效:
关于git - 从 Azure Pipelines 获取存储库 Git 仅提取一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71060689/