I have found the better solution is to create a network drive, share it (technology does not really matter)
Next mount / link all your engine servers so they can see the network drive
I would suggest its one off your root, so your Web-INF or other files get stored locally on the engine server, where as the mounted directory is pure code
thats it. I would use virtual machines as its easy to spin up new servers as needed.
And if you are running any code that does file creation, deletion or edits, you need to make the permissions as universal as possible for your test environments. This wills ave you hours of wondering why it works on X&Y but not Z.