Skip to content

Development Workflow de

stbrumm edited this page Sep 8, 2026 · 2 revisions

Development-Workflow

English · Deutsch · Español

Diese Seite beschreibt, wie die Rivulet-Entwicklung organisiert ist — und insbesondere, wie der lokale Pre-Push-Hook den develop-Branch vor kaputten Pushes schützt. Derselbe Workflow ist im Repository unter CONTRIBUTING.md dokumentiert; die Repository-Kopie ist die maßgebliche Quelle.

Grundlagen

  • Arbeite auf einem Feature-Branch von develop und committe mit Conventional-Commit-Nachrichten (feat:, fix:, docs:, ci:, ...).
  • Pushe und öffne einen PR gegen develop.
  • CI führt die erforderlichen Checks aus: Lint (fmt + clippy), die komplette Testsuite, Pinning-Tests, Smoke-Tests (RIST/SRT/OBS WebSocket) und mehr.
  • feat:/fix:-Commits (und releasbare Build-/Chore-Commits) bauen und veröffentlichen automatisch ein Alpha-Release.

Lokaler Pre-Push-Hook

Ein eingecheckter Git-Hook (.githooks/pre-push) spiegelt lokal den CI-Job Lints (Fmt & Clippy), damit ein Push die erforderlichen Checks niemals brechen kann.

Ausgeführt wird in dieser Reihenfolge:

  1. cargo fmt --all --check
  2. cargo clippy --workspace --all-targets -- -D warnings
  3. Fast-Guard-Stufe (standardmäßig aktiv): cargo test -p rivulet-core --test ci_pinning plus die Skript-Selbsttests des Lints-Jobs (Action-Pin-Check, Parity-Checklist-/Release-Notes-/ Theme-Contrast-Checks, generate-release-notes.sh --self-test).

Warum -D warnings wichtig ist: Ein simples cargo clippy warnt bei Lints wie clippy::field_reassign_with_default nur. Commit 06792c6 enthielt vier GUI-Tests, die lokal sauber waren, aber den CI-Lints-Job scheitern ließen; der Hook nutzt exakt die CI-Flags, damit solche Fehler vor dem Push auffallen.

Installation

Den Hook einmal pro Clone aktivieren:

git config core.hooksPath .githooks

Danach führt jeder git push die Checks automatisch aus.

Umschalter

Ziel Befehl
Fast-Guard-Stufe für einen Push überspringen RIVULET_PRE_PUSH_FAST_TESTS=0 git push
Kompletten Hook für einen Push überspringen RIVULET_SKIP_PRE_PUSH=1 git push
Kompletten Hook überspringen (git-nativ) git push --no-verify

Troubleshooting

  • Der Hook läuft nicht. Die Einstellung core.hooksPath gilt pro Clone — führe git config core.hooksPath .githooks in dem Checkout aus, von dem du pushst, und prüfe danach mit git config core.hooksPath (muss .githooks ausgeben).
  • bash auf Windows beim Syntax-Check nicht gefunden. Der Hook selbst läuft über git mit Git-for-Windows-bash. Der ci_pinning-Guard pre_push_hook_is_valid_bash bevorzugt explizit C:\Program Files\Git\bin\bash.exe; ist kein Git Bash installiert, wird der Guard lokal übersprungen (CI auf ubuntu erzwingt ihn weiterhin).
  • Clippy wirkt langsam. Der Workspace-Clippy ist inkrementell — der erste Aufruf kompiliert alles, spätere Pushes sind schnell. Mit RIVULET_PRE_PUSH_FAST_TESTS=0 läuft nur die Lint-Stufe.
  • Der Push wird vom Hook blockiert. Lies die Ausgabe des fehlgeschlagenen Checks — cargo fmt/cargo clippy nennen Datei und Lint exakt. Behebe es statt es zu umgehen; derselbe Fehler würde den CI-Lints-Job brechen.
  • Hook wieder entfernen. git config --unset core.hooksPath stellt das Standardverzeichnis .git/hooks wieder her (dort liegen keine Rivulet-Hooks).

Zuletzt geprüft: 2026-09-03

Clone this wiki locally