I'm curious to see how you handle your versioning and deployment. I currently work with Git, and am thinking of setting up a new environment as such:

Prod Box
UAT Box
Dev Box
Git Box - will hold all git repos except for a copy of dev, (uat, prod)

Workflow would be that development is done on Dev box, in a new git repo (housed on Dev Box). From here updates will be pushed to the project UAT repo on Git Box, and then a pull would be done after this from UAT. Same process from uat to prod (push from git box's uat repo to git box's prod repo, and then a pull request from prod machine.

I feel like there may be a better more effecient way of doing this. Whats your method or how would you do it if you could change?