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/development
todevelopment
on 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-branch
and sees a list of the branches onorigin
and 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-123
ontodevelopment
onorigin
. - 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-123
refers to the bug/feature #123 as Ted documents every bug/new feature on our issue tracker.