Repository navigation
Development Workflow de
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.
- Arbeite auf einem Feature-Branch von
developund 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.
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:
cargo fmt --all --checkcargo clippy --workspace --all-targets -- -D warnings-
Fast-Guard-Stufe (standardmäßig aktiv):
cargo test -p rivulet-core --test ci_pinningplus 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.
Den Hook einmal pro Clone aktivieren:
git config core.hooksPath .githooksDanach führt jeder git push die Checks automatisch aus.
| 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 |
-
Der Hook läuft nicht. Die Einstellung
core.hooksPathgilt pro Clone — führegit config core.hooksPath .githooksin dem Checkout aus, von dem du pushst, und prüfe danach mitgit config core.hooksPath(muss.githooksausgeben). -
bashauf Windows beim Syntax-Check nicht gefunden. Der Hook selbst läuft über git mit Git-for-Windows-bash. Der ci_pinning-Guardpre_push_hook_is_valid_bashbevorzugt explizitC:\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=0läuft nur die Lint-Stufe. -
Der Push wird vom Hook blockiert. Lies die Ausgabe des fehlgeschlagenen
Checks —
cargo fmt/cargo clippynennen 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.hooksPathstellt das Standardverzeichnis.git/hookswieder her (dort liegen keine Rivulet-Hooks).
Zuletzt geprüft: 2026-09-03