So at the company I work, we've always stored the Sitecore instance that we are developing (for the site we are building) in source control. In this instance, we use TFS for source control. (Though I doubt it matters much if it's Git or TFS)
However I've been building a few components for the market place and I've found that not committing the Sitecore instance into source control, is actually a lot easier and theoretically allows me to build my component to work with multiple versions of Sitecore (by firing up different versions using SIM). But does this only make sense when developing components?
That being said, how would I ensure each developer is using the correct version of Sitecore when testing their code that matches the Sitecore version of the client (if I'm not forcing them to use a specific version using source control)?
Also, how would this work with automated deployments? Would I just use the SIM to fire up the specific version of Sitecore from scratch each time and then install/publish the site on top of that fresh instance?
How do you handle Sitecore support fixes in that scenario? Would we need to store those in the Web project? If that's the case, wouldn't those cause issues if we started working with a newer version of Sitecore?