#!/bin/sh # Vor jedem Commit die Schnellstufe. Sie faengt ab, was sich sonst erst beim # Anwender zeigt: falsch formatierter Quelltext, Typfehler, schwebende Zusagen, # gebrochene Tests. # # WIE LANGE SIE BRAUCHT, STEHT NICHT HIER. Vor der Fassung 5.16.0 stand hier die # Laufzeit desselben Befehls ein zweites Mal ("etwa zwanzig Sekunden"), und sie # war um das Vierfache daneben. Zwei Stellen fuer eine Messung sind eine Stelle # zu viel: Wer die eine nachmisst, zieht die andere nicht mit. # # Geprueft wird dabei der Arbeitsbaum, nicht der bereitgestellte Stand: Alle # vier Stufen lesen die Dateien so, wie sie auf der Platte liegen, keine liest # den Bereitstellungsbereich. Wer nur einen Teil bereitstellt (git add -p, # git commit ), erfaehrt hier also nichts ueber den entstehenden Commit - # der Lauf kann gruen sein, waehrend der Commit rot ist, und umgekehrt. Diesen # Stand in einen Wegwerf-Arbeitsbaum zu schreiben und dort zu pruefen, waere # genauer, verlangt aber je Commit ein neues Verzeichnis samt node_modules. # Was das kostet, ist nicht gemessen; es faellt aber bei JEDEM Commit an, und # ein Haken, der zu lange braucht, wird umgangen - dann prueft gar nichts mehr. # # Bewusst NICHT die Vollstufe: Sie baut zusaetzlich den Auslieferungsstand und # startet Electron in einem echten Fenster - beides je Commit. Sie gehoert # vor eine Veroeffentlichung (npm run gate). # # Eingerichtet mit: git config core.hooksPath .githooks # # Dieser Befehl gehoert einmal in JEDE Arbeitskopie. Er landet in .git/config # und damit ausserhalb des Baumes; git clone, git worktree add und ein frisches # Auschecken fuehren ihn nicht mit. Seit Fassung 5.12.0 setzt ihn das # prepare-Skript in package.json bei jedem npm install; von Hand faellig ist er # nur noch dort, wo kein npm install laeuft oder wo git dabei fehlschlaegt. # Solange er in einer Arbeitskopie fehlt, findet Git diese Datei nicht: Dort # geht jeder Commit ungeprueft durch - ohne --no-verify und ohne Meldung. # # Wer hier mit --no-verify vorbeigeht, umgeht genau die Pruefung, die den # Fehler gefunden haette. Das ist keine Abkuerzung, das ist eine Wette. set -e npm run gate:schnell