A while back, I had a topic[1] that treated symlinked .gitattributes (and .gitignore and .mailmap) the same as .gitmodules: forbidding them in the index, complaining about them via fsck, etc. In the end, we decided not to do that[2], and instead just open the files with O_NOFOLLOW instead. As I said in that thread, we could salvage some of the cleanups, fsck checks, and docs from the original topic. So here that is. (The new topic is in master but not yet released; so while this is not strictly a bug-fix for an existing topic, it would be good to get especially the doc improvements into the same release). [1] https://lore.kernel.org/git/20201005071751.GA2290770@xxxxxxxxxxxxxxxxxxxxxxx/ [2] https://lore.kernel.org/git/YDiWs6yyv3U9YvC2@xxxxxxxxxxxxxxxxxxxxxxx/ The patches are: [1/9]: t7415: remove out-dated comment about translation [2/9]: fsck_tree(): fix shadowed variable [3/9]: fsck_tree(): wrap some long lines These three are really independent fixes and cleanups, that could be taken separately. [4/9]: t7415: rename to expand scope [5/9]: t7450: test verify_path() handling of gitmodules [6/9]: t7450: test .gitmodules symlink matching against obscured names These three are just cleaning up and improving the tests for the existing handling of the .gitmodules symlinks. [7/9]: t0060: test ntfs/hfs-obscured dotfiles [8/9]: fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW These two extend fsck checks (warnings, not errors) to the new files. I think this is an improvement, but I could be persuaded otherwise (and these two could be dropped independent of the rest). [9/9]: docs: document symlink restrictions for dot-files And this covers documentation for all of the files (including .gitmodules). Documentation/gitattributes.txt | 7 ++ Documentation/gitignore.txt | 5 + Documentation/gitmailmap.txt | 7 ++ Documentation/gitmodules.txt | 8 ++ cache.h | 1 + fsck.c | 84 ++++++++++--- fsck.h | 3 + path.c | 5 + t/helper/test-path-utils.c | 46 +++++-- t/t0060-path-utils.sh | 30 +++++ ...ule-names.sh => t7450-bad-git-dotfiles.sh} | 116 +++++++++++++----- utf8.c | 5 + utf8.h | 1 + 13 files changed, 257 insertions(+), 61 deletions(-) rename t/{t7415-submodule-names.sh => t7450-bad-git-dotfiles.sh} (70%) -Peff