Sorry to say that, but that's just not the way you use revision control software.
You have full history on the server no matter what you do on the client. You can revert any change, including deletion of everything.
Committing only fully tested, battle proven code to revision control gives you absolutely no benefits of using revision control in the first place.
What you could do is this: mark one branch as stable (this should be either
/braches/current-stable, I'd suggest the latter), let developers commit everywhere else. Setup Jenkins to do testing on
/trunk and merge commits from
current-stable only when they pass build tests.