We use Trunks (http://www.trunksapp.com) to host our SVN repos, then have post-commit hook fire an HTTP request to the production staging server to check out the latest revision.
We manually initiate an export from the live server, although we likely will look in the commit message for a keyword (like [live]) and initiate from there.