title: Github Dependency for Solution File
body: <p>I'm not sure the best way to describe this - i've done some googling but to on avail.</p>
  
  <p>I currently have a solution that has the following:</p>
  
  <p><code>Repository 1
  ProductProject1
  ProductProject2
  ProductProject3
  SharedCodeProject1
  SharedCodeProject2</code></p>
  
  <p>The problem I currently have is that if any developer wants to work on ProductProject1 they have to clone the entire Repository which gives them ProductProject1, 2 and 3. </p>
  
  <p>This has worked fine however until recently now that I'm hiring more devs I really want them solely focus on one of the 3 product projects and specialize on that.</p>
  
  <p>I'm curious how others manage this type of situation? Just allow the devs to clone the entire repository as I have been?</p>
  
  <p>My proposed solution was...</p>
  
  <p><strong>Possible Solution 1</strong> </p>
  
  <p>Setup individual repositories as so:</p>
  
  <p><code>Repository1
  ProductProject1
  SharedCodeProject1
  SharedCodeProject2</code></p>
  
  <p><code>Repository2
  ProductProject2
  SharedCodeProject1
  SharedCodeProject2</code></p>
  
  <p><code>Repository3
  ProductProject3
  SharedCodeProject1
  SharedCodeProject2</code></p>
  
  <p><strong>Pro:</strong> The code is leaner and only exposes the dev to the ProductProject they are responsible for</p>
  
  <p><strong>Con:</strong> After thinking this through, I realized that <code>SharedCodeProject1</code> and <code>SharedCodeProject2</code> will basically have mixed versions across each repository, when in fact they should and can just remain the same across all.</p>
  
  <p><strong>Possible Solution 2</strong> </p>
  
  <p>Setup individual repositories as so:</p>
  
  <p><code>Repository1
  ProductProject1</code></p>
  
  <p><code>Repository2
  ProductProject2</code></p>
  
  <p><code>Repository3
  ProductProject3</code></p>
  
  <p><code>Repository4
  SharedCodeProject1
  SharedCodeProject2</code></p>
  
  <p><strong>Pros:</strong> Honestly, i'm not even sure if this structure is possible as there will be a ton of broken references in Repositories 1 - 3 (unless there is some magical settings i'm unaware of) - however, in theory the bonus is that SharedCodeProject1 and 2 are centralized, so any dev that updates all devs receive and can reuse these updates (specifically to the DB layer which is one of the sharedcodeproject and the business logic that is in the other shared code project)</p>
  
  <p><strong>Cons:</strong> Breaking changes implemented won't really be realized across all repositories until sync (does this make sense)</p>
  
  <p>I'm having a really hard time trying to figure out the best way to make any of this work. I hope this makes sense, please let me know if I can clarify.</p>
  
  <p>I'm just curious how other companies structure large solutions, on github, like this, while attempting to restrict access to devs to specific projects only.</p>
  
  <p>Thanks much!</p>