Jens Krämer wrote this nice guide to deploying and maintaining Redmine the right way. This is basically a combination of the official Redmine documentation with a variety of guides on deploying and running a generic Ruby on Rails application. The solution is rightfully focusing on git, combining the upstream patches with your own changes. And given that this is “the right way”, you don’t even have to have any of your own changes. Just being prepared for some is good.
Once you’ve setup the proper environment, you can further automate the deployment of Redmine with Capistrano. If you don’t use Capistrano for whatever reason – no worries, the process is easily adoptable to whatever build/deploy tool you are using.