Johannes Sixt [off-list ref] writes:
.... The general idea is to extend the meaning of
`core.filemode = false` to check out symbolic links as plain files. Any
hints about where the source code needs changes are welcome.
grep for "if (S_ISLNK(mode))", see if it talks about the mode we
put (either in tree object or index) and if so they are the
places you want them to pretend that you got a regular file.
For example, builtin-apply.c::try_create_file() is one. This
writes out "git apply" result (so "am" and "rebase" are affected
with this). entry.c::write_entry() is another. This writes
things out of the index and used by "checkout-index" and
"read-tree -u".