I have a Rails application that I sell as a product. That is, a number of clients use the same software, except for small customizations, such as layouts, css files, etc.
I use SVN and Capistrano to manage the software and deployment. What I’d like to be able to do is to give all my clients regular software updates, without blowing away their layouts, css, and other customized files.
The way I’m doing this now is a bit kludgy for my taste. I’m sure there is a better way. My method has far too many manual steps, and I don’t feel like I’m using the full power of SVN or Capistrano.
For example, I’m still not sure whether I should be using just one main SVN trunk for all development (but then what do I do about customized layouts, for example), or a branch for each client (but then how do I ‘distribute’ new features to all clients?)
Any ideas for ‘best practices’ for doing this kind of ‘productized’ deployment, much appreciated.