if there is a monorepo such as git@xxxxxxxxxx:derrickstolee/sparse-checkout-example.git There are many files and directories: client/ android/ electron/ iOS/ service/ common/ identity/ list/ photos/ web/ browser/ editor/ friends/ boostrap.sh LICENSE.md README.md Now we can use partial-clone + sparse-checkout to reduce the network overhead, and reduce disk storage space size, that's good. But I also need a ACL to control what directory or file people can fetch/push. e.g. I don't want a client fetch the code in "service" or "web". Now if the user client use "git log -p" or "git sparse-checkout add service"... or other git command, git which will download them by "git fetch --filter=blob:none --stdin <oid>" automatically. This means that the git client and server interact with git objects (and don't care about path) we cannot simply ban someone download a "path" on the server side. What should I do? You may recommend me to use submodule, but due to its complexity, I don't really want to use it :-( ZheNing Hu