Description
Gitea Version
1.15.6
Git Version
Seen on different servers running 2.25.1 and 2.34.0
Operating System
Ubuntu 20.04.3
How are you running Gitea?
One server is manually deployed from a GitHub release and started with a systemd script. The other uses the apt
-installed version of Gitea.
Database
PostgreSQL
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
I can gather a log if that would be helpful. I've included clear repro steps in the description.
Description
LFS files are failing to download from forks. The only reason I can't repro on try.gitea.io is because LFS doesn't seem to be enabled. This is my minimal repro (visible at https://git.pernicious.games/try-gitea-lfs/lfs-fork-test and the fork at https://git.pernicious.games/cpickett/lfs-fork-test/src/branch/fork-1).
Note that we are pretty sure this used to work on our Gitea installation months ago, so it may be caused by a relatively recent Gitea version (maybe 1.15+).
The repro steps are:
- Create new repo with an LFS file
- Fork that repo
- Commit a new rev of the LFS file in a branch on the fork
- Open a PR for the main repo from the fork's branch
Now clone the base repo somewhere else and try to either pull from the remote or the PR ref:
- Clone base repo (e.g.
git clone https://git.pernicious.games/try-gitea-lfs/lfs-fork-test.git
) - Add the fork as a remote and fetch it (e.g.:
git remote add parnic https://git.pernicious.games/cpickett/lfs-fork-test.git
,git fetch parnic
) - Try switching to the branch that exists in the fork with the modified LFS file (e.g.:
git switch fork-1
)- Receive error, e.g.:
Downloading test.lfs (9 B)
Error downloading object: test.lfs (7ffc8bb): Smudge error: Error downloading test.lfs (7ffc8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f): [7ffc8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f] Not Found: [404] Not Found
- Restore modified files and try switching to the PR ref instead (e.g.:
git restore .
,git fetch origin pull/1/head:test
,git switch test
)- Receive same error as above
Note that the LFS file at the specified revision/hash exists in the fork, e.g.: https://git.pernicious.games/cpickett/lfs-fork-test.git/info/lfs/objects/7ffc8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f/direct
but it does not exist in the base repo: https://git.pernicious.games/try-gitea-lfs/lfs-fork-test.git/info/lfs/objects/7ffc8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f/direct
This is important because when running git lfs fetch --all
we see that it is trying to pull from the base org, not the fork:
>git lfs fetch --all
fetch: 2 object(s) found, done.
fetch: Fetching all references...
[7ffc8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f] Not Found: [404] Not Found
error: failed to fetch some objects from 'https://git.pernicious.games/try-gitea-lfs/lfs-fork-test.git/info/lfs'
Finally, note that the LFS file does exist on the disk under the generic LFS directory. For this example, that's
/var/lib/gitea/data/lfs/7f/fc/8bb3b0c443a3d170b1f6aa402a66c6de86c49dd2d74e452d6d82b855939f
Screenshots
No response