Saltar al contenido principal

Git Flow

Convenciones de branching y commits en Xindeler.

Branches

BranchDescripción
mainSiempre estable y deployable. Protegida — solo merge por PR aprobado.
feat/*Nueva funcionalidad. Se crea desde main, se mergea a main.
fix/*Corrección de bug.
chore/*Refactor, limpieza, actualización de dependencias.
docs/*Cambios solo de documentación.

No existen branches develop, staging ni release — el modelo es trunk-based simplificado.


Flujo estándar

main ──────────────────────────────────────────► main
│ ▲
└─── feat/nueva-habilidad ─────┘
(commits incrementales)
  1. Crear branch desde main actualizado
  2. Commitear con frecuencia en la branch
  3. Abrir PR contra main
  4. Pasar review y CI
  5. Merge a main (squash o merge commit, según prefiera el reviewer)

Formato de commits

tipo: descripción corta en minúsculas (máx. 72 caracteres)

Cuerpo opcional explicando el por qué, no el qué.
El qué lo explica el código.

Tipos válidos

TipoCuándo
featNueva funcionalidad visible para el jugador o contributor
fixCorrección de bug
refactorCambio interno sin cambio de comportamiento
choreDependencias, CI, configuración
docsSolo documentación
testAgregar o arreglar tests
perfMejora de performance

Ejemplos

feat: add parry window to sword combo
fix: correct backstab damage multiplier for rogue
refactor: split CombatSystem into attack and defense phases
docs: document RON format for ability definitions
chore: update quinn to 0.11

Reglas de la branch main

  • No se pushea directo — todo entra por PR
  • Requiere 1 aprobación del maintainer (@Matute289)
  • CI debe pasar (cargo build, cargo clippy, cargo test)
  • El maintainer puede hacer merge sin PR (bypass) para hotfixes urgentes

Resolución de conflictos

Si tu branch divergió de main, rebaseá en lugar de mergear:

git fetch upstream
git rebase upstream/main

Resolvé los conflictos archivo por archivo, luego:

git add <archivo-resuelto>
git rebase --continue
git push origin feat/tu-branch --force-with-lease

Usá --force-with-lease en lugar de --force — falla si alguien más pusheó a tu branch mientras tanto.