I have a master copy of a Drupal site and for each client I create a copy and then apply the client’s branding identity to the theme and template so that each site looks different from the others but they pretty much behave in the same way.
Now two things can happen:
1.A client requests a new feature.
If the feature is also usually to other client, I would like to merge it to the master copy. If the feature is only useful for that client, it stays with the clone.
2.A new feature is implemented to the master copy and needs to be rolled out to all clones.
Overtime each clone has grown differently, how can I apply the feature to the clone without interfering the existing content and feature in each clone? I use the feature module but it’s a pain that I have to long into every clone to enable the feature.
It’s very tricky when it come to situations like this with Drupal for some settings are in file, some are in the database. I use Drupal 6.x and this has been the longest lasting pain. SVN helps a lot but only in the file leave.
Has anybody come across a good strategy?
Basically:
Sites all contains modules and themes that are common through all your sites (CCK, Views). Sites will inherit access to them. If you need to use a newer version of CCK, you could put that in site1.com / modules, run update.php, and be good to go. If a client wants a new feature that is site-specific, write the module, drop it in the site folder. No other site sees it, and only that site runs that code.
For configuration, there is Features and Strongarm that let you export site features, which theoretically you could drop into sites/all/modules and all sites would have access to that new feature.