GIT branch model for derivative work
https://softwareengineering.stackexchange.com/questions/11802
-
16-10-2019 - |
Question
I'm planning on using Vincent Driessen's branching model which I found great for my current development. I think Vincent approach is very general to any development project but I'm finding it difficult to handle the following scenario.
I'm working on an application that will be branded to several customers, so each one of my bundles is a different branch that I rebase
from develop
branch each time a new build is going to be released. Each brand has its assets (images and text) and they do not conflict with changes in develop
branch because in that branch I never touch the assets.
My question is, now that I'm planning on using it, how can I handle different versions based on the same code base but with different assets?
Solution
If each brand has independent assets then you can create each customer branch from develop
and then pull
future changes in as required. Individual assets can be created, edited and committed on the appropriate customer branch.
A nice side-effect of this is that you could have common assets on develop
if that makes sense.
Depending on how distributed your development is, you might consider pull
ing from master rather than rebase
ing. You don't want to rebase
if commits are being pushed around to other repositories.
To summarise: code changes on develop
; asset changes on customer-X
; occasionally pull
from develop
to customer-X
. Sorted.
OTHER TIPS
I've skimmed over the article, so I can't be sure I got everything 100% correct, but here's my idea: can you simply edit your assets in the master
branch? Or, if you're keeping your "branded branches", modify your assets only there. You can then simply merge the code from your develop
, since you're not touching any assets there.
To be honest, if assets are the only problem here, I'd create a config file (or a database table if you have one) for your application which would tell it which assets to load dynamically. This would eliminate any "brand branches" and make it easy for you to maintain your assets easily.