我有一个使用git lfs在Azure存储库中的项目,并使用Git LFS检查了几个二进制图像文件。当我的Azure Pipelines构建执行git pull
时,图像文件未从git lfs中撤出,我将带有几个零字节图像文件。
我使用的是自定义的自托管Azure Pipelines Build Server,它在其上安装了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
时,将正确下载文件。当我在Azure管道中运行git lfs pull
作为构建步骤时,我会收到以下错误:
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'.
您必须使用https for LFS与Azure DevOps一起使用,并且在执行构建时必须进行LFS检查:
steps:
- checkout: self # self represents the repo where the initial Pipelines YAML file was found
lfs: true
如果您使用的是UI向导,则有一个复选框来检查LFS
https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view= azure-devops& tabs = schema#checkout
https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/repos/pipeline-options-for-git?view= azure-devops#checkout#checkout-files-files-from-lom-lfs-lom-lfs
不幸的是, @4C74356B41的答案对我不起作用。我的问题与@haroon相同:
我使用lfs
配置了checkout
步骤,但是用哈希保留文件。
解决方案是手动运行git lfs fetch
和git lfs pull
steps:
- checkout: self
lfs: true
- script: |
git lfs fetch
git lfs pull
displayName: git-lfs
我认为错误非常简单。您尚未在管道中提供GIT凭据。
更重要的是,我能问为什么您要使用git做二进制文件?您如何打算对Git不了解的内容进行版本控制?我的意思是,您打算如何使用diff和诸如二进制文件中合并之类的功能?