DevOps支持使用PAT / GitCredManager / notSSH远程进行git存档|在没有git clone的git repo中下载子文件夹

问题描述 投票:1回答:1

上下文:提到建议使用Git凭据管理器或个人访问令牌来安全地连接到Azure DevOps(SSH将很快被安全性所禁用。)。我们的存储库非常大,历史悠久。克隆存储库需要花费时间,因此,在VSO Build Pipelines中使用“同步源”会使管道延迟约10分钟。我们希望能够在VSO构建管道执行期间下载部分源代码(vso git)。

询问:git存档可用于直接从远程下载git repo的特定子文件夹,而无需完整的git克隆。如何在没有git clone和SSH协议的情况下从DevOps Git下载特定subFolder的zip / tar?我们如何将推荐的PAT令牌/ AzureCredManager与git archive remote一起使用?

参考:

git archive --remote="https://<repo>" <branch> <subFolder>
fatal: operation not supported by protocol
  • https://askubuntu.com/a/1074185/601430具有过滤器的git clone,但是,没有有关如何在DevOps Git服务器上启用preReq设置的文档[uploadpack.allowfilter,uploadpack.allowanysha1inwant]。
  • 稀疏签出需要下载git remote add / indexs,这仍然很昂贵。
git azure-devops
1个回答
1
投票

更新:

解决方法:禁用“获取源代码”步骤,并通过在脚本中手动执行相应的git命令仅获取所需的源代码。为此,请使用-checkout:在YAML管道中不执行任何操作,或在get source步骤中检查不同步源。

[<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9KQmVmeC5wbmcifQ==” alt =“在此处输入图像描述”>

更多详细信息,请参考Shayki Abramczyk's在此问题中的出色回答:Checkout part of a branch in Azure DevOps Pipelines (GetSources)


对于Azure DevOps Git存储库,暂时无法指定要在Azure DevOps Pipeline中的“获取源代码”步骤中下载的文件的一部分。

根据您的描述,您的存储库似乎太大或其中包含太多二进制文件。考虑将其拆分为较小的存储库,或者如果它具有很多二进制文件,请使用Git-LFS作为二进制文件。

更多详细信息,请参阅此文档-Manage and store large files in Git

另一种解决方法是使用私有代理。如果构建在私有代理上排队,则在获取源代码步骤中将Clean选项设置为false

enter image description here

将清理选项设置为false后,它将在获取源文件步骤中下载更改的文件(而不是所有文件)。>>

© www.soinside.com 2019 - 2024. All rights reserved.