In this post we will talk about source control merging when a demo needs to be prepared.
I expect that all of us knows what a branch is. To be sure that we are talking about the same thing, let's see the definition from Wikipedia:
Usually, during the development of a project we will have multiple branches in parallel or in different moment in time. For example:
Now, to simplify the problem, let's assume that we have only one branch - main. At the end of the sprint, the client requires a demo. After the demo you need to be able to provide that specific version to the client and even make small fixes of that code if any issues are requires. This could be required if the client wants to go with the demo to senior executive for example.
In parallel with this, the team will continue to develop new features and go further with the next sprint.
In this moment there are two different options on the table:
(yes, the main branch is not the best name, it should be called Development, but for this example we went with main)
To be able to decide what is the best solution we need to take into account what branch needs to exists long after the demo is done. If we are creating a branch for the next sprint, then the development team may be blocked on the secondary branch until the demo is done and client say that he doesn't needs that demo anymore. This can be a week, a month or even more.
On the other hand, we can see the demo as a small release, that should be managed separately, with his own versioning and life. Fixes in the demo branch will need to be merged in the man branch because we don't want to lose them.
I imagine another branching solution for this problem:
Of course, we don't discuss what is happening after release. This is another story. Or if we have a testing team.
We can have different branching strategies, based on our needs and setup. As a rule, don't complicate your life if you don't need it.
I expect that all of us knows what a branch is. To be sure that we are talking about the same thing, let's see the definition from Wikipedia:
Branching, in revision control and software configuration management, is the duplication of an object under revision control (such as a source code file or a directory tree) so that modifications can happen in parallel along both branches.I don't want to enter in the different strategies of branching topic. There are multiple ways to do it in different phases of a project.
Usually, during the development of a project we will have multiple branches in parallel or in different moment in time. For example:
- Main
- Development
- Testing
- Integration
- Production
Now, to simplify the problem, let's assume that we have only one branch - main. At the end of the sprint, the client requires a demo. After the demo you need to be able to provide that specific version to the client and even make small fixes of that code if any issues are requires. This could be required if the client wants to go with the demo to senior executive for example.
In parallel with this, the team will continue to develop new features and go further with the next sprint.
In this moment there are two different options on the table:
- Create a branch for the demo
Or
- Create a branch for the next sprint (features that will be develop by the team) and use the main as branch demo.
(yes, the main branch is not the best name, it should be called Development, but for this example we went with main)
To be able to decide what is the best solution we need to take into account what branch needs to exists long after the demo is done. If we are creating a branch for the next sprint, then the development team may be blocked on the secondary branch until the demo is done and client say that he doesn't needs that demo anymore. This can be a week, a month or even more.
On the other hand, we can see the demo as a small release, that should be managed separately, with his own versioning and life. Fixes in the demo branch will need to be merged in the man branch because we don't want to lose them.
I imagine another branching solution for this problem:
- Main
- DevSprintX
- DemoSprintX
Of course, we don't discuss what is happening after release. This is another story. Or if we have a testing team.
We can have different branching strategies, based on our needs and setup. As a rule, don't complicate your life if you don't need it.
Comments
Post a Comment