practice

Trunk-Based Development

All developers integrating small changes into a single shared branch at least daily, with long-lived branches avoided entirely.

cibranchingdelivery

The alternative — long-lived feature branches — creates a hidden queue. Work that is "done" but unmerged is inventory: it is not integrated, not tested against everyone else's changes, and accumulating merge risk every day it stays out.

Trunk-based development removes the queue by making integration continuous. It requires three supports to be safe: a fast automated test suite (so trunk stays releasable), feature flags (so incomplete work can merge without being visible), and expand-and-contract for schema changes.

Research on delivery performance consistently finds branch lifetime to be one of the strongest predictors of both throughput and stability, which is a stronger claim than most practice advice can make.