My solution using git:
#!/bin/bash
# run in the project root
git add -A # track added files
git commit # local commit
git push # push to remote bare repository
ssh REMOTE_HOST 'cd PROJECT_FOLDER; git pull' # expand a working folder from the remote bare repository; usually public www folder is contained there
extra benefits: two copies of complete history for backup local and remote