GIT, Mercurial and other source control tools provide robust and easy to use branching capabilities. For work with OpenSource software where anyone could be a contributor and the environment is low trust, the use of branches is useful. For modern Agile teams attempting to continually improve (refactor) the code and use tools like Continuous Integration, Continuous Delivery etc, long-lived branches just add overhead. If you’ve ever experienced merge hell, you know the problem. If you’ve delayed a refactoring because it would make the branch harder to merge, your code has suffered.
EXAMPLE FROM REAL WORLD:
- Trunk-Based Development And Branch By Abstraction – Paul Hammant