We are investigate how to using modern code version systems for a legacy systems.
However, there are some difficulties that we do not really know how to solve. How do you think we should going to organize this?
Some parts of the code we have responsibility for, and some parts the customer are responsibility for.
The code that is in our development system is the master, and all changes are made there and then sent out to the customer. So far is it like a common project. But for some directories with a few hundred files, the client is responsible for the code. Customer can change these files as they want, and do not have inform us. When we do an update for them, we need to get a copy of these files and merge our changes before we give the new version to the customer.
We have released 4 base versions of the system over the 25 years the system have lived. Our six customers, however, use different versions of the system, which means that we have to consider it. In addition, each customer has their own requirements, and we have made major adjustments for each customer.
We have several parallel projects related to the same files. Today we have major problems that the various projects interfere with each other, so we will benefit greatly from having changes in different branches. But how do we organize this?
Some projects affect only one customer, other projects involving several customers. And some projects may be introduced into a new future base version.
So my question is how to organize this in our new version system.