For bzr and git:
bzr export --format=tar - | ssh -C server tar x -C /path/to/overwrite/files/in
git archive --format=tar HEAD | ssh -C server tar x -C /path/to/overwrite/files/in
Not perfect, as deleted files aren't removed, but good enough most of the time
