I see keeping all your infrastructure in source control as one of the key parts of DevOps, but so much is missed in most teams. The goal of your git repository should be to be able to have a new Developer or DevOps engineer to clone the repository and begin work straight away. This is always something I try to force upon myself by wiping my machine often. The more that I have to manually install and configure, means that there needs to be secret documentation somewhere (if it will ever exist) which explains to new starters on a project how to get started, how to setup their machine to the company/teams specification, before they can get cracking.
Scripting your development environment can be so important, as it’s litterally living documentation, it won’t get stale or forgotten if you do everything in the scripts.
Even better than having a script that installs all the dependencies that you need for a client/project, why not stick everything in a Docker container? Commit the dockerfile in to your teams git repository and boom, all people need to do is pull the docker image. It will work on Windows / Linux / Mac, and no versioning nightmares.
/src /dockerfile /docker-compose
My current workflow
git repo structure