We have been using git-flow for a while for the development of a software framework. We have the masterand 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-customerXYZbranch can contain commits worthy of being implemented in the productmaster/developmentbranch. Since thefeature-customerXYZbranch will never be closed, those commits have to berebasedorcherrypickedto the product branches, which requires extra work after the customization and is error prone.Hotfixes discovered while a
feature-customerbranch is open are handled bygit-flowby merging the openedhotfixbranches after the fix only to the productmasteranddevelopmentbranch, but are not merged into openfeature-customerbranches (to be more precise: they are not merged into all openfeaturebranches).
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?