I am trying to set a proper branching strategy for an application that is structured as below.
Following is the directory structure of the application
|______SuperApp
| |______CommonCode
| |
| |______App1
| |
| |______App2
|
|_____ InfraStructureCode
SuperApp consist of multiple micro apps that can be developed / worked independently as long as Common Code and infrastructure code directories are present.
The constraint we wanna put in place is ,
i) Developers working on a specific app (Say App1) should not have access to push changes related common code or infrastructure code.
Currently we achieve this using
git update-index --skip-worktree <DirectorytoSKIP>
ii) Maintain certain level of atomicity between each apps like App1 , App2 etc.,
(i.e.,) currently if we create a new branch from develop , to add a new feature in say App1 , all the other apps directory( App2 , App3) also will get included.
So to maintain atomicity is there a better branching strategy ?
Ideally , we would want a feature branch to have only common code , infrastructure code and the particular micro apps (App1) which is being developed.
However in master branch or release branch we wanted to maintain the entire application ( like the directory structure as shown above).