Trunk-based development aims to solve issues that arise from feature branching such as merge conflicts and integration problems. It advocates keeping the main codebase in a releasable state at all times through practices such as continuous integration, componentization, and making changes in small, incremental steps. Branching is discouraged except for short-lived spikes or major new releases, as large changes tend to cause more problems. The approach enables easy flow of work across teams and helps avoid integration issues that come from separate branches diverging too much.
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Bate-papo Trunk Based Development
1. Bate-papo com o Especialista
Trunk Based Development
Carlos Lopes Guilherme Lacerda
ThoughtWorks FACENSA/UniRitter
TargetTrust/Surya Software Innovation
11. syntactic conflict
class BlaBlaBla {
<<<<<<< HEAD
public void bla(Bla oldBla, New newBla) {
oldBla.bla();
newBla.newBla();
=======
public void bla(Bla oldBla, Other otherBla) {
oldBla.bla();
otherBla.otherBla();
>>>>>>> other commit
}
}
12. semantic conflict
class BlaBlaBla {
public void something(Bla bla) {
<<<<<<< HEAD
bla = bla.plus(14);
=======
bla = bla.minus(7);
>>>>>>> change
//other stuff
}
}
23. “feature branching is a poor man's modular
architecture, instead of building systems
with the ability to easy swap in and out
features at runtime/deploytime they couple
themselves to the source control providing
this mechanism through manual merging”
Dan Bodart