developers (for a particular deployable unit) commit to one shared branch under source-control. That branch is going to be colloquially known as trunk.
are not allowed to create branches in shared place • Only release engineers commit to release branches • Cherry-pick is allowed • Old release branches should be deleted
NEVER --force push to trunk! • Do nice commit messages! • Revert commit when you push something BAD! • Use pre-commit verifications! • Let CI be your friend!
part of the system that you need to change. 2) Re-factor the rest of the system to use the abstraction layer 3) Create new classes in your new implementation, and have your abstraction layer delegate to the old or the new classes as required. 4) Remove the old implementation 5) Rinse and repeat the previous two steps, shipping your system in the meantime if desired 6) Once the old implementation has been completely replaced, you can remove the abstraction layer if you like