We have been using git-flow
for a while for the development of a software framework. We have the master
and development
branches in a single repository.
Recently, different customers became interested in buying the framework, which requires a customization of the framework per customer.
So far, we branched a new feature-customerXYZ
branch for each customer from the master, did the customization there and kept the branch open, after the customization was finished (which prevents 'infection' of the product master
/development
branch from the customization).
Parallel to this, the development on the framework itself goes on using the usual git-flow workflow on the product master
, development
, features
, hotfixes
and release
branches.
There are two common scenarios happening in this context for which I think our workflow cannot handle optimally:
Development of the
feature-customerXYZ
branch can contain commits worthy of being implemented in the productmaster
/development
branch. Since thefeature-customerXYZ
branch will never be closed, those commits have to berebased
orcherrypicked
to the product branches, which requires extra work after the customization and is error prone.Hotfixes discovered while a
feature-customer
branch is open are handled bygit-flow
by merging the openedhotfix
branches after the fix only to the productmaster
anddevelopment
branch, but are not merged into openfeature-customer
branches (to be more precise: they are not merged into all openfeature
branches).
Is there a git workflow that can handle this in a concise way? Is there a clever alternative instead of merge
, cherrypick
or rebase
of the commits to the product master
/develop
or the open feature
branches, respectively?