I would say that the steps you need to take in the scenario you are describing are 100% dependent on the development environment and the tools that you set up.
Using Perforce to control source code versions, we created a branching system in which releases are separate from development, and all development branches are from a single โacceptโ branch. Each branch is used for one problem or for a set of very closely related questions. No other problems can be handled in the branch until the changes are integrated into the adoption branch.
Yes, that means we have many branches. Yes, we do a lot of synchronization (reception before the work branch) and integration (separation of work before adoption). But its value is innumerable when it comes to a simple transition from one task to another, a return to test construction, identifying two problems associated with a piece, etc.
After the development has done its job (including its own tests), the problem is tested by the QA team. First isolated in its own branch. After that, it integrates into the receiving branch, and regression testing is performed to find problems with independent problems biting each other. Therefore, when all releases for a release have been integrated into acceptance, the QA team performs a full regression and a new functionality test.
So, the adoption branch is always the "last" state of development for an application.
In this setup, the described scenario will look like:
Leave my current task as it is, maybe check for any changes so that you donโt lose them if your computer crashes. If this means breaking the daily build of this thread, I would not register if it was not easy to fix compilation errors. (Please note that we have many applications in our application suite, and although my changes can be compiled in the application I'm working on, they can still break the compilation of other applications in our package). Our rule: each element may interfere with functionality, but should not interfere with the assembly process.
Find an โemptyโ branch - a branch that is not currently used for any development work, or, if all branches are busy, create a new one.
Force synchronization of the adoption branch and the selected work branch so that my machine has the most recent state for both branches.
Synchronize (force, if necessary) the last state of the adoption branch to the working branch, so the selected working branch is the same as the acceptance branch.
Open this application suite in the IDE, debug and solve. Submit to the work branch.
Tell QA to look at it in the work branch. If they are satisfied with this, integrate the changes before adoption so that they can continue testing them.
Switch the IDE to work with the application package in the branch I worked in before.
Rinse and repeat.
Marjan venema
source share