For this little discussion i assume the standard layout as described here

Development phase

During the development you want to see your changes live instantly. That is pretty easily solvable with a hook script as described in this FAQ

A little sidenote to the FAQ. if your system ships with sudo, you can use that instead of the custom C binary above.

So far every thing was pretty simple.

Releasing

I personally prefer release branches. every time a new milestone goes live. I branch trunk to branches/release-1.2.x and keep that around for bugfixing. Trunk will be used for the ongoing development.

My production site always runs from a tag. That makes it easy to step backwards in the releases. Just a simple “svn switch url/tags/sometag”.

Conclusion

As you see versioning website is not that much different from “normal code”.