Git/Django: Granular code permissioning/availability

| | August 7, 2015

We’re thinking of bringing in a couple of specialists for short-term projects. I’m trying to figure out how to allow them to effectively develop against our code base without releasing the whole code base to them.

Each project has well defined areas they need access to; primarily our main models, together with specific pieces of our app.

We’ve started to do a better job of breaking up the project into multiple apps within a single django project, but they all still live together in a single git repository. If you check out the repository you get everything.

What are successful strategies for arranging code and repositories such that third parties can access core models and selected functionality without having access to everything?

Note that since this is a somewhat rare need, I’d strongly prefer a setup that doesn’t inconvenience our core developers – their lives should be minimally impacted by the setup.

One Response to “Git/Django: Granular code permissioning/availability”

  1. You might try git-submodule as a way of developing each app as its own git repository while still letting developers grab the root and all apps with one “git clone”. It’s not totally painless though since when you do this any changes to a submodule will need to be committed there and then again in the root repository to reference the new submodule commit. This is probably inescapable, since if you want anyone beside a core developer to be able to commit to an individual app then the app’s commits must be independent.

Leave a Reply