Puppet is often used with git as the mechanism to publish/distribute the configuration. This sidesteps the not-very-scalable central Puppet server.
But the use of git isn't sophisticated in the least. Git can help in a few ways, IMO, and this is my initial approach at the topic:
https://groups.google.com/forum/?fromgroups#!topic/puppet-users/OilxMytnD_k
No fun in building this bike shed all alone :-)
m -- martin.langhoff@gmail.com - ask interesting questions - don't get distracted with shiny stuff - working code first ~ http://docs.moodle.org/en/User:Martin_Langhoff