# Estrategia de Git Branching - ROI Theme Migration ## Modelo de Branching Usaremos un modelo simplificado basado en **Git Flow** adaptado para esta migración. ## Estructura de Ramas ``` main (producción) │ └── migration/clean-architecture (rama principal de migración) │ ├── migration/fase-1-infrastructure ├── migration/fase-2-database ├── migration/fase-3-domain ├── migration/fase-4-application ├── migration/fase-5-infrastructure-layer ├── migration/fase-6-components ├── migration/fase-7-testing ├── migration/fase-8-deprecation └── migration/fase-9-documentation ``` ## Reglas de Trabajo ### 1. Rama Principal de Migración - **Nombre**: `migration/clean-architecture` - **Propósito**: Integrar todas las fases de la migración - **Protegida**: NO se pushea directamente a esta rama - **Base para**: Todas las ramas de fases individuales ### 2. Ramas de Fases - **Naming**: `migration/fase-{número}-{nombre-descriptivo}` - **Flujo**: 1. Crear desde `migration/clean-architecture` 2. Desarrollar la fase completa 3. Merge de vuelta a `migration/clean-architecture` 4. Tag de versión (v{fase}.0.0) ## Workflow por Fase ```bash # 1. Asegurarse de estar en rama principal de migración git checkout migration/clean-architecture git pull origin migration/clean-architecture # 2. Crear rama para nueva fase git checkout -b migration/fase-1-infrastructure # 3. Trabajar en la fase git add . git commit -m "Descripción del cambio" # 4. Al completar la fase git checkout migration/clean-architecture git merge --no-ff migration/fase-1-infrastructure -m "Merge Fase 1: Infrastructure Base" # 5. Crear tag de versión git tag -a v1.0.0 -m "Fase 1 completada: Infrastructure Base" # 6. Push (si hay repositorio remoto) git push origin migration/clean-architecture git push origin v1.0.0 ``` ## Commits ### Formato de Mensajes ``` Fase {número}: {Título corto} - Cambio 1 - Cambio 2 - Cambio 3 ``` ## Tags ### Convención de Versionado - **Fase completada**: `v{fase}.0.0` - Ejemplo: `v1.0.0` (Fase 1 completada) - **Correcciones menores**: `v{fase}.{minor}.0` - **Hotfixes**: `v{fase}.{minor}.{patch}` ## Checklist Pre-Commit - [ ] Código sigue estándares (`composer phpcs`) - [ ] Tests pasan (`composer test`) - [ ] No hay archivos de backup incluidos - [ ] No hay credenciales hardcodeadas - [ ] Mensaje de commit es descriptivo ## Checklist Pre-Merge - [ ] Todos los tests de la fase pasan - [ ] Código sigue estándares PHPCS - [ ] Documentación actualizada - [ ] Tag de versión creado