Code management requires that all code be stored in Git. Splitting your code up into multiple repositories and placing the code on the master allows for references to different versions of code. Each of your modules should reside in a separate repository, allowing for versioning and governance on a per-module basis. The Puppetfile will call these repositories by using the Puppet Forge, or pointers at your own local Git instance.