We have a team of 8 devs and 1 QA (tester) and we're struggling with dependencies between tickets and causing a lot of merge headaches and/or people waiting around for the next bit of work to pick up.
Our current GIT flow model (branches):
Release | > Epic (Feature Branch) | | > Ticket : This is where the dev does their work and QA test on | | | then we move to the epic branch once passed.
Our company creates api's using web api (.Net, C#) we also have an Anuglar site and old admin site in MVC using mostly jquery.
On a lot of recent project's we had to create api's for insert, update, delete, and get. We usually code the "insert" ticket first and make the other tickets dependent on that one, because of things like the coding the controller, Db tables and class's which the other api's will need/use.
But then, the "update" will need to check to see if what is being updated exists in the DB. So it is dependent on the "get" so that we end up with 3 layers of branching.
... | > Insert | | > Update | | | > Get.
This can get a lot worse when there are more epics involved. This causes a lot of merging issues, or confusion for QA's and dev's on which branches they need.
How do people cut down on this? Pair programming? Create empty stub methods?
A big issue we have is the lack of QA resource as we're struggling to hire people. A lot of tickets just stack up in the QA pile causing to keep fixing conflicts in the ticket branches.
I was thinking of create an new git flow:
Release | > Epic (Feature Branch) | | > Epic (Dev) | | | > Ticket
So with this new Epic (Dev) branch, once the ticket has been coded, we merge in straight into this branch and then the QA's test of that branch and once passed we move it into the Epic (Feature Branch).
- QA don't have to keep switching branches
- Can test full flows instead of just the individual tickets.
Can this, as I hope, result in less conflicts? Does anyone think this is better then our current setup? Does anyone have any better suggestions?
Note: At the moment we can't have a qa test environment (this is out of my control)