Question: What's the best way to implement directory permission control in git?
- From
ZheNing Hu <adlternative@gmail.com>
- Date
- Jul 27, 2022, 08:56 UTC
- Message-ID
- <CAOLTT8QusNzdO1mHqQFPz84pznYSpFWJunroRGXQ7qk6sJjeYg@mail.gmail.com>
if there is a monorepo such as git@github.com: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.mdNow 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