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

标签 git azure-devops azure-pipelines

我正在使用 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 中设置这些输入也有效:

enter image description here

关于git - 从 Azure Pipelines 获取存储库 Git 仅提取一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71060689/

相关文章:

git - TFS 构建定义关联的提交

azure - 如何: Password Protect Azure App service

visual-studio - 是否有提供存储库根目录的 MSBuild 属性?

azure - 将变量传递到 YAML 文件中

azure - 如果有警告,则使构建失败,YAML

azure - 等待新部署的应用服务在 Azure Devops 发布管道中重新启动

git - 如何撤消对特定文件的本地更改

git - 如何将一个孤儿分支附加到“原样”母版?

Git 查找从分支 A 到 B 的最后一次 merge

git - 是否可以在 Azure Release 管道中从另一个团队项目克隆 Git 存储库?