title: git branching strategy for independent features
body: <p>I am trying to set a proper branching strategy for an application that is structured as below.</p>
  <p>Following is the directory structure of the application</p>
  <pre><code>|______SuperApp
  |          |______CommonCode
  |          |
  |          |______App1
  |          |
  |          |______App2
  |
  |_____ InfraStructureCode
  
  </code></pre>
  <p>SuperApp consist of multiple micro apps that can be developed / worked independently as long as Common Code and infrastructure code directories are present.</p>
  <p>The constraint we wanna put in place is ,</p>
  <p>i) Developers working on a specific app (Say App1) should not have access to push changes related common code or infrastructure code.</p>
  <p>Currently we achieve this using</p>
  <pre><code>git update-index --skip-worktree &lt;DirectorytoSKIP&gt;
  </code></pre>
  <p>ii) Maintain certain level of atomicity between each apps like App1 , App2 etc.,</p>
  <p>(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.</p>
  <p>So to maintain atomicity is there a better branching strategy ?</p>
  <p>Ideally , we would want a feature branch to have only common code , infrastructure code and the particular micro apps (App1) which is being developed.</p>
  <p>However in master branch or release branch we wanted to maintain the entire application ( like the directory structure as shown above).</p>