I had used No 2 that Phil has mentioned. 
 What I configured was I made a Working copy on the svn server for every repository just to as for Auto Deployment.
 So whenever someone commits to a repository my post-commit script updates the working copy and then the working copy is rsync'd to the Client's Servers using a cron that used to run every 2 mins to rsyen the working copy among different client machines.
 I was using Subversion. Here are the commands that I used.
  - svn co file:///path/to/$SvnRepoName /working/$ProjectName --> A local working copy on svn server 
- /usr/bin/svn update /working/$PROJECTNAME --> in my post-commit script. 
- A shell script to rsync /working/$PROJECTNAME among client machines. 
  
post-commit hooksonSVN serverto update toTest Server.SVN serverandTest Serverare two separate serverssvn update.