What versioning strategy to adopt for a project that is customized for different clients?
I am curious about what source versioning strategy would others apply on a java project (web application) which is very probable to have customization for several customers.
The project will have a standard version, but for some of its customers there will be some customizations to be done (on different branches).
By reading this thread : What branching strategy should I use during the development/maintenance of a web application? I guess that the "Branch by release" would fit for the development of the standard version of the project.
Now while working on a customer branch there are some improvements/bugfixes performed on the code on which other customer/standard version would benefit this would mean that for each of the branches there will be merges & tests to be performed in order to be keep everything up to date.
As a constraint, for this project we are stuck with CVS as a s开发者_StackOverflowource versioning system.
For versioning of the artifacts which are built we'll use maven (dependy : artifactId, groupId, version, classifier - customer name - in order to clearly distinguish the artifacts).
I would recommend creating a branch per customer AND a branch per feature and letting your trunk represent your "standard version".
Any small bug fixes would be merged back to the trunk and subsequently propagated out to all branches. The same would hold true for new features, as you would merge them back to the trunk and kill the branch.
All your customer branches would be long-living, and you would make your customer-specific customizations there and would release from those branches.
精彩评论