-
-
Notifications
You must be signed in to change notification settings - Fork 5.9k
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