I used to manage a few directories recursively and it was very slow and cumbersome.
I just manage the directories themselves if i need to and the files individually.
It makes it a bit more complex initially but you get fine grained control over things and it's so much faster.
If you really need to manage a directory recursively and there is no other way I recommend using your preferred version control system.
If you want to do that easily with puppet then puppetlabs/vcsrepo on the forge looks like the nicest way of doing it.