Re: [PATCH 0/2] Revert defense-in-depth patches breaking Git LFS
- From
Joey Hess <id@joeyh.name>
- Date
- May 28, 2024, 02:13 UTC
- Message-ID
- <ZlU94wcstaAHv_HZ@kitenet.net>
- In-Reply-To
- <fbb89826-0d83-d4f9-bab4-9fba69e0e22d@gmx.de>
Johannes Schindelin wrote:
Show 7 quoted lines
> > More than one major project; they also broke git-annex in the case where > > a git-annex repository, which contains symlinks into > > .git/annex/objects/, is pushed to a bare repository with > > receive.fsckObjects set. (Gitlab is currently affected[1].) > > This added fsck functionality was specifically marked as `WARN` instead of > `ERROR`, though. So it should not have failed.
A git push into a bare repository with receive.fsckobjects = true fails:
joey@darkstar:~/tmp/bench/bar.git>git config --list |grep fsck receive.fsckobjects=true joey@darkstar:~/tmp/bench/bar.git>cd .. joey@darkstar:~/tmp/bench>cd foo joey@darkstar:~/tmp/bench/foo>git push ../bar.git master Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 12 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 324 bytes | 324.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) remote: error: object ea461949b973a70f2163bb501b9d74652bde9e30: symlinkPointsToGitDir: symlink target points to git dir remote: fatal: fsck error in pack objects error: remote unpack failed: unpack-objects abnormal exit To ../bar.git ! [remote rejected] master -> master (unpacker error) error: failed to push some refs to '../bar.git'
So I guess that the WARN doesn't work like you expected it to in this case of receive.fsckobjects checking.
Show 5 quoted lines
> > This means that symlinks to eg "git~1" are also warned about, > > which seems strange behavior on eg Linux. > > Only until you realize that there are many cross-platform projects, and > that Windows Subsystem for Linux is a thing.
I realize that of course, but I also reserve the right to make git repos that contain files named eg "CON" if I want to. Git should not demand filename interoperability with arbitrary OSes.
Show 7 quoted lines
> > + backslash = memchr(p, '\\', slash - p); > > > > This and other backslash handling code for some reason is also run on > > linux, so a symlink to eg "ummmm\\git~1" is also warned about. > > Right. As far as I can tell, there are very few Linux-only projects left, > so this is in line with many (most?) projects being cross-platform.
We may have very different lived experiences then.
-- see shy jo