Skip to content

Development Workflow es

stbrumm edited this page Sep 8, 2026 · 1 revision

Development Workflow

English · Deutsch · Español

Esta página describe cómo se organiza el desarrollo de Rivulet y, en particular, cómo el pre-push hook local protege develop de pushes rotos. El mismo flujo está documentado en el repositorio en CONTRIBUTING.md; la copia del repositorio es la fuente normativa.

Fundamentos

  • Trabaja en una rama de feature desde develop, haz commits con mensajes convencionales (feat:, fix:, docs:, ci:, ...).
  • Haz push y abre un PR contra develop.
  • CI ejecuta las comprobaciones requeridas: lint (fmt + clippy), la suite completa de tests, pinning tests, smoke tests (RIST/SRT/OBS WebSocket) y más.
  • Los commits feat:/fix: (y build/chore publicables) construyen y publican automáticamente un alpha release.

Pre-push hook local

Un hook de git versionado (.githooks/pre-push) replica en local el job de CI Lints (Fmt & Clippy), de modo que un push nunca pueda romper las comprobaciones requeridas.

Lo que ejecuta, en orden:

  1. cargo fmt --all --check
  2. cargo clippy --workspace --all-targets -- -D warnings
  3. Fase de fast-guards (activada por defecto): cargo test -p rivulet-core --test ci_pinning más los self-tests de los scripts del job Lints (comprobación de action-pins, parity-checklist/release-notes/ theme-contrast, generate-release-notes.sh --self-test).

Por qué importa -D warnings: un cargo clippy normal solo advirte sobre lints como clippy::field_reassign_with_default. El commit 06792c6 envió cuatro tests de GUI que estaban limpios en local pero rompieron el job Lints de CI; el hook usa las flags exactas de CI para que esa clase de fallo suceda antes del push.

Instalación

Activa el hook una vez por clon:

git config core.hooksPath .githooks

Después, cada git push ejecuta las comprobaciones automáticamente.

Interruptores

Objetivo Comando
Saltar la fase de fast-guards para un push RIVULET_PRE_PUSH_FAST_TESTS=0 git push
Saltar el hook completo para un push RIVULET_SKIP_PRE_PUSH=1 git push
Saltar el hook completo (nativo de git) git push --no-verify

Solución de problemas

  • El hook no se ejecuta. El ajuste core.hooksPath es por clon — ejecuta git config core.hooksPath .githooks en el checkout desde el que haces push y verifica con git config core.hooksPath (debe imprimir .githooks).
  • bash no encontrado en Windows durante la comprobación de sintaxis. El hook se ejecuta desde git, que usa el bash de Git for Windows. El guard de ci_pinning pre_push_hook_is_valid_bash prefiere un C:\Program Files\Git\bin\bash.exe explícito; cuando no hay Git Bash instalado, el guard se salta en local (CI en ubuntu lo sigue aplicando).
  • Clippy va lento. La ejecución de clippy del workspace es incremental — la primera invocación compila todo, los pushes posteriores son rápidos. Usa RIVULET_PRE_PUSH_FAST_TESTS=0 si solo debe correr la fase de lint.
  • El push es bloqueado por el hook. Lee la salida de la comprobación que falla — cargo fmt/cargo clippy informan del archivo y del lint exactos. Arréglalo, no lo saltes; el mismo fallo rompería el job Lints de CI.
  • Quitar el hook de nuevo. git config --unset core.hooksPath restaura el directorio por defecto .git/hooks (que no contiene hooks de Rivulet).

Last reviewed: 2026-09-08

Clone this wiki locally