I have a base website project which I use as a starting point for several customers. Each customer can have specific changes to the project which I don't want to include in the base project. However sometimes a specific customer feature makes sense to include in the base project and push to all other customers ( such as bug fixes ).
Right now I have the projects setup with TFS, so that each customer is a branch of the base project. It works by merging changes to the base into each branch, but it is a terribly slow process. I would like to switch to git (on github), so I can perform these operations locally and reduce the time spent on these operations.
After reading tons of articles, these are my conclusions so far :
- Git branching will not work well in my scenario. I need different folders for each project, so I can run the sites simultaneously.
- "Submoduling" the base code into each customer repo does not seem like the right solution, as the base is not a subfolder in the project, it "is the project".
- Cherrypicking changesets requires the base remote to be added to the customer project and seems complicated ( and I haven´t been able to make it work so far )
So as far as I understand, I should create a new repo for each new customer, copy the code from base initially, and create patches for moving changes between the projects (i am not concerned about history). I can probably live with this approach, expecially if I can create a tool which automates the process.
Could someone please tell me if I'm on the right track, and how I should go about adding new sites ideally ( having in mind that the workflow should work for several developers).
Thanks in advance