Prefer trunk-based development over other branching models

  • data-coding
  • idea
  • spring

One-line summary

A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’1, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.

Claims

  • You should do Trunk-Based Development instead of GitFlow and other branching models that feature multiple long-running branches
  • You can either do a direct to trunk commit/push (v small teams) or a Pull-Request workflow as long as those feature branches are short-lived and the product of a single person.

For small teams

At scale

Notes

  • Trunk-Based Development is a key enabler of Continuous Integration and by extension Continuous Delivery. (…) [It] ensures the codebase is always releasable on demand and helps to make Continuous Delivery a reality.
  • The largest of development organizations, like Google (as mentioned) and Facebook practice it at scale.
  • Very similar to GitHub flow
  1. main or master, in Git nomenclature 

Metadata