Using a VCS as your deployment strategy is The Wrong Way to do it.
I won't go into it in this comment because it's been beaten to death and you can find information about deployments everywhere; even the commenter on your blog post makes a better suggestion than your VCS deployment strategy.
Continuous integration, source/binary distributions, automated provisioning, sandboxing, versioning, etc...; it's all out there.
For a lot of cases, you are correct that continuous testing, integration, deployment is the way to go, especially when deployed systems have many moving parts. However for small projects, mimicking a Heroku style of testing locally, commit changes, and use git hooks for deployment seems like a good solution.