Leitfaden
CLI: Commits ohne OAuth-App mit Karten verknüpfen
Eine Bash-Datei, MIT-lizenziert auf GitHub: post-commit-Hook, Releases aus Git-Tags — und die Regel, wann eine Karten-ID Arbeit bedeutet und wann nur einen Verweis.
Die Zuuna-CLI ist eine einzelne Bash-Datei ohne Abhängigkeiten außer git und curl. Sie meldet Commits und Branches an dein Board und schneidet Releases aus Git-Tags. Sie ist quelloffen unter MIT-Lizenz auf GitHub — du kannst sie vor dem Ausführen komplett lesen.
In 30 Sekunden installiert
curl -o zuuna https://app.zuuna.de/zuuna.sh
chmod +x zuuna
./zuuna init https://app.zuuna.de zk_live_dein_token
Das schreibt .git/zuuna.conf mit Rechten 600 und installiert einen post-commit-Hook. Ab da wird jeder Commit automatisch gemeldet. Die Konfiguration liegt innerhalb von .git/ und kann damit nicht versehentlich eingecheckt werden; im Skript selbst steht kein Token.
Was als Arbeit zählt — und was nur ein Verweis ist
Eine Karten-ID im Commit zu erwähnen heißt nicht immer, dass du an dieser Karte gearbeitet hast. Manchmal zeigst du nur darauf. Beides gleich zu behandeln ist der Grund, warum Karten auf einem Board rückwärts laufen: Ein beiläufig zitiertes Ticket wird verlinkt, bewegt und drei Tage später von einem fremden Commit wieder geöffnet.
Deshalb entscheidet die Position:
| Wo die ID steht | Gilt als | Wirkung |
|---|---|---|
| Betreffzeile des Commits | Arbeit | verlinkt und bewegt die Karte |
| Branch-Name | Arbeit | verlinkt und bewegt die Karte |
Body, hinter ref: / see: | nur Verweis | verlinkt, bewegt nicht |
| Body, ohne Präfix | nur Verweis | verlinkt, bewegt nicht |
Die Befehle
zuuna init <url> <token> [gruppen-id]— Konfiguration schreiben, Hook installieren. Die Gruppen-ID braucht nur, werreleaseoderplannutzt.zuuna report— den aktuellen Commit und Branch von Hand melden. Nützlich nach einem--amend.zuuna plan <name> [--tag v1.2.3]— ein geplantes Release anlegen, optional an das Tag gebunden, als das es erscheinen wird.zuuna release [--tag v1.2.3]— ein Release aus einem Tag schneiden: die Commits seit dem vorigen Tag einsammeln und das Manifest schicken.
Der Hook bricht deinen Commit nie ab
Ein ungültiges Token oder ein nicht erreichbarer Server darf dich nicht am Committen hindern — der Hook schreibt eine Warnung nach stderr und beendet sich mit 0. Er schreibt sie aber: Eine frühere Fassung verschluckte alles mit || true, wodurch ein widerrufenes Token exakt wie Erfolg aussah.
zuuna report macht das Gegenteil und endet bei 401 oder 403 mit einem Fehlercode — dort wartet ein Mensch auf eine Antwort.
Voraussetzungen
git und curl. Für release und plan zusätzlich jq. Die URL ist ein Parameter, nichts ist auf einen bestimmten Host festgenagelt — die CLI spricht nie mit deinem Git-Host, sondern mit deiner Zuuna-Instanz. Ein Gitea, das nur im Firmennetz erreichbar ist, funktioniert deshalb genauso.
Weiter
Schritt für Schritt steht dasselbe im Tutorial Commits automatisch mit Karten verknüpfen. Was auf der Karte landet, zeigt Git auf dem Board; was daraus über die Zeit wird, der Code-Graph. Die REST-API ist der Weg für alles, was die CLI nicht abdeckt.
Häufige Fragen
Ist die CLI Open Source?
Ja, unter MIT-Lizenz auf GitHub. Der Dienst selbst ist es nicht — die CLI schon, und sie ist eine einzelne Bash-Datei, die du vor dem Ausführen komplett lesen kannst.
Wo landet mein Token?
In .git/zuuna.conf mit Rechten 600. Die Datei liegt innerhalb von .git/ und kann damit nicht eingecheckt werden. Im Skript selbst steht kein Token.
Bricht der Hook meinen Commit ab, wenn der Server nicht erreichbar ist?
Nein. Der Hook schreibt eine Warnung nach stderr und beendet sich mit 0. Der Commit geht immer durch.
Funktioniert das mit GitLab oder einem selbst gehosteten Gitea?
Ja. Die CLI spricht nie mit deinem Git-Host, sondern nur mit deiner Zuuna-Instanz — ein reiner HTTP-Aufruf. Auch eine Instanz, die von außen nicht erreichbar ist, funktioniert.