从 Azure Pipelines 的获取存储库 Git 中仅提取一个文件夹

Pull only one folder from get repository Git from Azure Pipelines

我正在研究 Git。我的环境是 Azure DevOps。我有一个 vsts 构建代理。 我正在尝试将我的存储库中的一个文件夹仅拉到构建代理中。我正在使用 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 上尝试相同的操作,它会给出错误,因为无法读取用户名错误。我确实尝试了 Whosebug 的建议,但没有用。欢迎任何新建议。

我对您的脚本做了一些更改,当从同一个 Azure DevOps 组织下载源代码时,它正在我的环境中运行。变化如下:

  • 我没有依赖手动设置稀疏配置,而是使用 sparse-checkout set 命令,它会自动设置其他所需的标志和配置。
  • 我没有(不安全地)在克隆 URL 中设置安全令牌,而是将变量作为 extraheader.
  • 传递
  • 我没有依赖 PAT(在本地很好),而是从 build/release 作业中获取访问令牌。

这导致以下任务:

steps:
- task: PowerShell@2
  displayName: 'Sparse Checkout'
  inputs:
    script: |
     git init
     git remote add origin https://org@dev.azure.com/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 中设置这些输入同样有效: