I've already done most of that.
For instance, we have a strings file. Developers are adding to this strings file for each release. They use techie speak in their version.
I have a copy of this strings file for each customer. They rewrite these strings as they see fit. Then as part of my build process, I overlay the original version of this file with the customer's version and run a build. pretty simple.
But now we're on the next release and there are new strings to be customized. How do I get the new strings into the customers' file so they can rework them?
I could merge the changes made to the base file into the customized file. That would be messy unless I had fenceposts of static text that the merge process could lock onto to figure out which strings had changed. I think I solved this by splitting the strings across two lines. The first line holds the label and the second line is the string and since the labels never change, this seems to work okay.
So, should I create a branch for each customer and keep their customizations in a branch? That would allow me to use the standard build tools, but I would have to merge their changes from a branch based on release 1 to a branch based on release 2. Then patches could be done by simply merging from base rel 2 branch to the customized rel 2 branches.
Or should I stick with my copy methodology?
to put this another way, should base product changes merge to customization branches or should the customizations be applied to the base branches. I suppose the answer may depend on whether or not I could ever conceive of releasing a customized build without the latest changes. That would be most easily done using the merge from base to custom method.
I was kind of hoping someone had some tools to help with this.