Basically the scenario is this:
There is one main version of an application, but it is modified for each client. The development is usually through the version that is currently worked on.
All the other versions should be updated after adding new features or bug fixes.
Application is written in ASP.NET MVC C#
Git is used for source control and there is one server version for each project. Branching is used mainly for working on different features.
Here are my thoughts on the problem:
Since the current modified version is the latest one, when I add a feature, I have to somehow add it to all of the other projects. Same goes for fixing bugs. Doing that manually is out of the question, so I guess I have to use some complex way of version control and merging?
Is this is even possible to pull off? I fear that at some point (20 versions) it will be impossible to keep up with what's where. The problem is, I don't see any other solution...
EDIT (There aren't many propositions for solution in this or the other topic ):
As you guys said, it is a bad idea to have many versions, and it's best to have one body-of-code which can handle all of the scenarios, but there wasn't much said about how to accomplish this.
-Someone said that modular (plug-in) design would be good, but this really isn't the case, since there will be many modifications to existing code.
-using #if ?
-using config files ? How does this work exactly ? I wasn't able to find any examples.