Comparativa de estrategias de branching
Tabla comparativa y árbol de decisión para elegir entre Trunk-Based, GitHub Flow, GitFlow y GitLab Flow.
#Resumen
| Eje | Trunk-Based | GitHub Flow | GitLab Flow | GitFlow |
|---|---|---|---|---|
| Ramas permanentes | 1 (main) |
1 (main) |
main + ambientes/releases |
2 (main, develop) |
| Vida de una rama de trabajo | Horas | Horas a pocos días | Pocos días | Días a semanas |
| Entrega | Continua | Continua | Continua con aprobaciones | Por release planificado |
| Versiones en paralelo | Difícil | No | Sí (ramas de release) | Sí |
| Exige CI maduro | Sí, mucho | Sí | Sí | Menos |
| Complejidad | Baja | Baja | Media | Alta |
| Costo de merge | Mínimo | Bajo | Medio | Alto |
| Mejor para | SaaS, equipos con buen CI | SaaS, equipos chicos/medianos | Ambientes con aprobación | Desktop, mobile, librerías |
#Árbol de decisión
CSHARP
¿Contribuyentes externos sin permiso de escritura? → Forking Workflow
¿Mantenés varias versiones soportadas a la vez? → Ramas de release (GitFlow o GitLab Flow)
¿Necesitás aprobaciones por ambiente? → GitLab Flow
¿Desplegás continuamente y tenés CI sólido? → Trunk-Based
¿Equipo chico, deploy continuo, querés simpleza? → GitHub Flow
#Preguntas clave antes de decidir
| Pregunta | Si la respuesta es… | Tendé a |
|---|---|---|
| ¿Cada cuánto desplegás? | Varias veces al día | Trunk-Based / GitHub Flow |
| ¿Cómo llega el software al usuario? | Instalación o app store | GitFlow / ramas de release |
| ¿Cuánto confiás en tus tests? | Poco | Ramas algo más largas, mejorá los tests primero |
| ¿Tamaño del equipo? | Muy grande | Trunk-Based con feature flags |
| ¿Hay gate de QA manual o compliance? | Sí | GitLab Flow |
| ¿Dominás feature flags? | No | GitHub Flow antes que Trunk-Based puro |
Regla: empezá con GitHub Flow y acortá las ramas hasta llegar a Trunk-Based a medida que mejora tu CI. Usá GitFlow solo si tu producto realmente tiene versiones.
#comparison #git