How does puppet manifest versioning work? I can't find any documentation around this area. Most stuff I read so far says to check in to svn and do update on puppet master, but unless a puppet client can specify and 'pull' a specific version of the manifest, it's useless. When I roll back a deployment, I don't want it to be deplored against a version of manifest I didn't test against.
Puppet has no concept of VCS versions for its modules and manifests. It will simply use the files that are stored in the correct place and there is no way to require a specific version for a client.
Instead of this, you can work with Puppet environments and only deploy the new version of a module to e.g. the testing environment and test it with clients configured to use this testing environment. If you are satisfied with the module, you then deploy it to the production environment where it will be picked up by all clients.
If you find an error afterwards, you can roll back the production environment to the last known good version, but this will not revert changes made on the clients by the newer version.