I have a generic software product that 3 potential clients customers (maybe more) might be interested in. The thing is for every customer this said generic product will have to be modified/customized according to their specific needs.
The customization entails more or less :
database change requirements
core module & functionality changes
artwork-graphics,logos etc.
Currently I have been using the feature workflow for my
generic product development with my team of 5+ developers
all contributing towards the generic product repository
Our current workflow on the generic product is similiar
to this illustration here –
http://nvie.com/posts/a-successful-git-branching-model/
Now, what i want to do is change the current workflow
to something like this below in order to customize every version of the
generic product for a customer.
My proposed new git workflow :
Assumptions :
There are 3 customers that need their own specific customized version of the generic product.
FORK from the generic repository creating a new repository for every customer
eg.**generic_customerA** **generic_customerB**and so on.
- Setup users/access rights etc.
- User clones the specific repository eg. generic_customerA
- users make changes,creates branches and commits to his repository.
- user merges the his branch with master
- Push to the remote.
From what i can see the only thing worth worrying about
is the amount of repositories that will be created for each customer
but its a price worth paying for simplicity sake and less repository management
overhead right?
If you are creating the separate repositories so each client’s repo is physically separated from each other, then this workflow is fine.
Your central repo then becomes the upstream for these client repos, which is a very common model in git – the clients’ work on their branches periodically pulling from your master and merging in the changes.