Skip to main content

Cómo empezar

Guía para hacer tu primera contribución a Xindeler.

Prerequisitos

  • Rust nightly instalado (ver Instalación local)
  • Cuenta en GitHub
  • Git configurado localmente

1. Fork y clone

Hacé fork del repo en GitHub y clonalo:

git clone https://github.com/TU_USUARIO/xindeler
cd xindeler
git remote add upstream https://github.com/Matute289/xindeler

El remote upstream te permite traer cambios del repo oficial.


2. Sincronizar con upstream

Antes de empezar cualquier tarea, siempre sincronizá tu fork:

git checkout main
git fetch upstream
git merge upstream/main
git push origin main

3. Crear una branch

Nunca trabajes directo en main. Creá una branch desde main:

git checkout -b feat/nombre-descriptivo

Convenciones de prefijo:

PrefijoCuándo usarlo
feat/Nueva funcionalidad
fix/Corrección de bug
chore/Refactor, limpieza, dependencias
docs/Solo documentación

4. Hacer cambios y commitear

Trabajá en tu branch con commits frecuentes. Cada commit debe compilar:

cargo build # verificar que compila
cargo clippy # verificar que pasa el linter
cargo test # correr los tests

git add src/... # agregá solo los archivos relevantes
git commit -m "feat: descripción concisa del cambio"

El formato del mensaje de commit es tipo: descripción en minúsculas. Ver Git Flow para detalles.


5. Abrir el PR

git push origin feat/nombre-descriptivo

Luego abrí el PR en GitHub contra main del repo upstream (Matute289/xindeler). En la descripción incluí:

  • Qué cambia y por qué
  • Cómo probarlo
  • Screenshots si hay cambios visuales

6. Revisión y merge

  • Un maintainer revisará el PR y puede pedir cambios
  • Respondé los comentarios con nuevos commits en la misma branch — no abras un PR nuevo
  • Una vez aprobado, el maintainer hace el merge

Buenas prácticas

  • Un PR por funcionalidad — PRs pequeños y enfocados se revisan más rápido
  • Tests para bugs — Si corregís un bug, agregá un test que lo reproduzca
  • No rompas la buildcargo build y cargo clippy deben pasar antes de pushear
  • Commits atómicos — Cada commit debe dejar el repo en un estado funcional