Trunk-Based Development
Todo el equipo integra en una única rama (trunk/main) con ramas de vida muy corta y feature flags.
Contexto
Equipos con integración y entrega continuas que quieren minimizar el costo de integrar. Es el modelo que más se asocia con equipos de alto rendimiento en las métricas DORA (frecuencia de deploy y lead time).
Problema
Las ramas de larga vida divergen. Cuanto más tarde se integran, más conflictos, más riesgo y más trabajo "oculto" que nadie ve hasta el final.
Solución
- Existe una sola rama de integración:
main(el trunk). - Cada persona hace commits directos al trunk o usa ramas de vida corta (menos de uno o dos días).
- El trunk siempre compila y pasa los tests: el CI corre en cada push.
- El trabajo incompleto se esconde detrás de Feature Flags, no en una rama.
- Los cambios grandes se hacen con branch by abstraction: se introduce una abstracción, se migra de a poco y se retira la implementación vieja.
#Flujo
CSHARP
main ──●──●──●──●──●──●──●──●──▶ (siempre desplegable)
\ / \ /
● ● ← ramas de horas, no de semanas
BASH
git switch -c fix/rounding-error
# ... cambio chico, tests locales
git push -u origin fix/rounding-error
# PR corto, review rápido, merge hoy mismo
git switch main && git pull --ff-only
#Releases
- Desde el trunk: cada commit verde es candidato a producción (deploy continuo).
- Rama de release corta: si necesitás estabilizar, cortás
release/1.4desde el trunk; los fixes se hacen en el trunk primero y se cherry-pickean a la rama de release.
#Qué necesitás para que funcione
- CI rápido (minutos, no horas) y tests automatizados confiables.
- Feature flags y una forma de limpiarlos cuando dejan de usarse.
- Revisiones de código rápidas (PRs chicos) o pair/mob programming.
- Cultura de "romper el build es la urgencia número uno".
Cuándo NO aplicarlo
- Sin tests automatizados ni CI confiable: vas a romper
mainseguido. - Equipos con muchas personas nuevas o sin experiencia, sin revisión rápida.
- Software con varias versiones soportadas en paralelo: mejor ramas de release (ver GitFlow).
Tradeoffs
| Pro | Contra |
|---|---|
| Merges triviales, casi sin conflictos | Exige CI y tests sólidos |
| Feedback y deploys muy frecuentes | Requiere disciplina con feature flags |
| Menos overhead de gestión de ramas | Cultura: cuesta si el equipo viene de ramas largas |
#git #branching #ci #trunk-based