'Git - How to maintain a C# solution as GitHub repo with variations for specific customers

We have a base solution developed in C#. Many times, we make customer specific changes. For such "customizations", we make a copy of the base solution folder, name it as per the client, and do the code changes. The base solution and client specific solution are about 90% identical.

How should we maintain this solution in GitHub?

  1. Should we create a monorepo, with subfolders for the base solution and for each client specific solution?

  2. Should we create separate repo for the base solution and for each client specific solution?

  3. Should we create a single repo for the base solution and maintain branches for each client? In this approach, how should we maintain release cycle for each branch? For each customer, we will need a main branch, qa branch and prod branch.

The base solution gets enhanced over time with new feature additions. These enhancements need not be immediately added to client specific solutions which are already deployed, unless the client comes back with a feature request or sales team sells the new feature to existing clients.

Any strong pros or cons?

The potential number of clients for the base solution can be around 100-200.

EDIT 1:

The client specific changes could be something like adding a few additional columns to a business report which are relevant only to that client's business or industry, or preparing some fields of an API payload from a different source field based on the client's implementation or usage of the software, etc.



Solution 1:[1]

You can use Git submodules

other link that is more superficial

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Marcio Rocha