What's the best practice for upgrading a versioned Craft site?
I know your method works flawlessly, but it scares the crap out of me.

Luckily Craft's update setup is magical.

What I do is this.


Make sure my repo is clear of unstaged files, just so the update can be in a commit all by itself.
Run the update on my local dev environment (with a local database) (Test)
Commit the updated files and push
Backup live database just in case
Deploy the files on live. (I use Beanstalk, so it uploads the files for me, but you can also do a git pull if that's your method of deployment.) Craft detects that the database version doesn't match the files and puts up a maintenance message.
Visit /admin and click the update button
Drink.