如何将 Git LFS 与 Azure Repos 和管道一起使用

How to use Git LFS with Azure Repos and Pipelines

我有一个在 Azure Repos 中使用 Git LFS 的项目,其中几个二进制图像文件正在使用 Git LFS 签入。当我的 Azure Pipelines 构建执行 git pull 时,图像文件没有从 Git LFS 中提取,我留下了几个零字节图像文件。

我正在使用自定义的自托管 Azure Pipelines 构建服务器,其中安装了最新版本的 Git LFS:

PS C:\rehan> git lfs --version                                                                                     git-lfs/2.7.2 (GitHub; windows amd64; go 1.12.2; git 08a08ae0)

我尝试添加步骤来执行 git lfs install 但这没有帮助。当我在登录构建服务器后手动执行 git lfs pull 时,文件已正确下载。当我 运行 git lfs pull 作为我的 Azure Pipeline 中的构建步骤时,我收到以下错误:

fatal: could not read Username for 'https://foo.visualstudio.com': terminal prompts disabled
batch response: Git credentials for https://foo.visualstudio.com/Bar/_git/Bar not found.
error: failed to fetch some objects from 'https://foo.visualstudio.com/Bar/_git/Bar.git/info/lfs'
Downloading LFS objects:   0% (0/1), 0 B | 0 B/s                                
##[error]PowerShell exited with code '1'.

我认为错误很简单。 您尚未在管道中提供 git 凭据。

更重要的是,请问您为什么对二进制文件使用 git? 您打算如何对 git 不理解的内容进行版本控制? 我的意思是,您打算如何在二进制文件上使用 diff 和 merge 等功能?

您必须为 lfs 使用 https 才能与 Azure Devops 一起使用,并且在进行构建时必须进行 LFS 检出:

steps:
- checkout: self  # self represents the repo where the initial Pipelines YAML file was found
  lfs: true

如果您使用的是 UI 向导,则有一个检查 lfs

的复选框

https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#checkout
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view=azure-devops#checkout-files-from-lfs