We have someone (let's call him Ted) that is responsible for testing new features and bug fixes.
We're using Git and GitHub. master should be/is always deployable and development is where we commit/merge new features or bug fixes, but only after they have been tested by Ted.
The project is in PHP.
I'd like the testing process to go like this:
- A developer wants to work on a new feature (let's say the feature/bug #123 as Ted documented in the issue tracker), so he pulls
origin/developmenttodevelopmenton his local repository and creates a new branch (let's sayissue-123) from there. - Once he's happy with his work, he commits and pushes his new branch to
origin. - Ted connects to
test.ourproject.com/choose-branchand sees a list of the branches onoriginand chooses to switch onissue-123(it should be doable through the webpage). He then goes ontest.ourproject.com, tests the hell out of the web application (he's really pitiless) and after some back and forth with the developer, he's happy with the feature. - Ted tells the developer that he can merge
issue-123ontodevelopmentonorigin. - Rinse and repeat.
For the third step, I could hack something that does the job (showing and switching branches from a specific page), but I feel that what I've described is a very common pattern.
So my question is: Is this a good / sustainable / maintainable workflow for branching? Can you back up your answer by citing some examples of other projects following this workflow?
issue-123refers to the bug/feature #123 as Ted documents every bug/new feature on our issue tracker.