Which means one bug fix will have to go to as many as three places. An issue may be found and fixed first in master and then pushed to the other two branches. It could also be initiated from one of the other branchs and then pushed back to master. I don't think it is a good practice and it will gets harder to maintenance.
I think the best solution is keep only one active branch (one copy of common source code, no duplicated code) and use different maven tasks to produce build kits for different purposes. For example we can define the build target in a property file like hornetq.properties:
build.target = AS7 | EAP5 | EAP6
and all relevant build tasks will observe this flag for their proper actions.
we don't really have any choice as each product, i.e. eap 5 and eap 6 requires its own branch.
If you use git cherry picking its very quick and simple to copy commits between branches, simply apply a fix to one branch and push it and then checkout the next branch and use git cherry-pick commitid where commitid is the SHA of the orignal commit
|Retrieving data ...|