-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Closed
Milestone
Description
So I was experimenting with git-lfs in an attempt to get it working on my home server, when I stumbled across a cryptic error.
$ git pull
Updating 6c231ca..408714c
Downloading normal.tga (16.00 MB)
Error downloading object: normal.tga (87bcf825161b15108437017834569a6d0614fd99e3cb2269c5d184aee011a116)
Errors logged to D:\msys2\home\Josh\git-lfs-test-repo\local\.git\lfs\objects\logs\20170421T234530.4973295.log
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: normal.tga: smudge filter lfs failed
(log file)
(Disclaimer: above output was reproduced post-fix by a git reset --hard HEAD^ && rm -r .git/lfs)
Ultimately I traced it down to a combination of following:
lfs/pointer_smudge.gocreates a transfer queue with the remote ""- This "" remote ultimately makes it to the endpoint finder and is replaced by
defaultRemote defaultRemoteis origin, and my repo doesn't have a origin remote
Some possible fixes:
- I've noticed the use of
git.DefaultRemote()elsewhere. However I'm unfamiliar with the codebase, so I don't know if it's really that simple. It seems to be better than hardcoding origin though, and I may have already patched my system git-lfs to use it. - At the very least, a better error message that catches attempts to use non-existent remotes
- AFAIK there's no way to know the remote in a pull like the pre-push hook does. Not that it matters since the smudge filters run on checkout. Maybe git can be extended to allow git-lfs to track what commits come from what remotes, or maybe a simpler shotgun approach where git-lfs queries all the remotes until it has found all files.
As a workaround you can either do GIT_LFS_SKIP_SMUDGE=1 git pull && git lfs pull, rename your remote to origin, or set lfs.url so there's only one git lfs server
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels