5.4 KiB
gitea-workflow — Git- und Gitea-REST-API-Workflows
Kurz: Wenn das Repo schreibgeschützt ist (Faden 8 / R2), arbeitet der Agent über einen sauberen Clone in
/tmpund erstellt einen PR via Gitea-REST-API statt direkt zu pushen.
Was der Skill tut
Der Skill beschreibt einen alternativen Git-Workflow für Fälle, in denen der direkte Schreibzugriff auf ein Repo blockiert ist (insbesondere das mission-control-v2-Repo unter Faden 8/R2). Statt direkt zu committen, wird:
- Ein frischer Clone in
/tmperstellt. - Ein Feature-Branch von
origin/mainabgezweigt. - Änderungen im Clone gemacht, committet, gepusht.
- Ein Pull Request via Gitea-REST-API auf
mainerstellt.
Das Ergebnis landet als Vorschlags-Branch auf Gitea und geht über das Auftragsbuch ins Live-System — der Commander muss es annehmen.
Wann er zum Einsatz kommt
| Situation | Aktion |
|---|---|
| Repo hat Schreibschutz (Faden 8 / R2) | Gitea-Workflow (diese Datei) |
| Neues Projekt wird vorbereitet | gitea-repo-create.sh + Gerüst aufbauen |
| Normaler Repo-Zugriff ist erlaubt | Direkter Git-Workflow (Branch → Commit → Push) |
Konfiguration
Zugangsdaten
- Gitea-URL:
https://git.tobisniceshomelab.ddnsfree.com - User:
Hitonabi - Token: In
.git-credentialsoder Config-Files hinterlegt (Scopewrite:repository) - Repo-Anlege-Token: In
~/.config/gitea/create-token(dedizierteswrite:user-Token)
Token-Unterschied
| Token | Ort | Scope | Einsatz |
|---|---|---|---|
| Push/PR-Token | ~/.git-credentials |
write:repository |
Branch-Push, PR erstellen |
| Repo-Anlege-Token | ~/.config/gitea/create-token |
write:user |
Nur Repo-Anlage über gitea-repo-create.sh |
Ein Repo kann nur mit dem write:user-Token angelegt werden — der Push-Token reicht nicht. Nie per Roh-curl erzwingen.
Arbeitsablauf (Schritt-für-Schritt)
1. Sauberen Clone erstellen
cd /tmp && rm -rf <repo>-temp && git clone https://USER:TOKEN@git.tobisniceshomelab.ddnsfree.com/USER/<repo>.git <repo>-temp
2. Branch von origin/main erstellen
cd /tmp/<repo>-temp && git checkout -b <branch-name> origin/main
Branch-Namen mit / (z. B. doku/gitea-skill) funktionieren.
3. Files kopieren, committen
cp <quelle> <repo>-temp/<pfad>
git add <pfad> && git commit -m "<commit-nachricht>"
4. Pushen
cd /tmp/<repo>-temp && git push origin <branch-name>
5. PR via REST API erstellen
curl -sL -X POST "https://git.tobisniceshomelab.ddnsfree.com/api/v1/repos/<owner>/<repo>/pulls" \
-H "Authorization: token <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"title": "<PR-Titel>", "body": "<PR-Body>", "head": "<branch-name>", "base": "main"}'
6. Main-SHA abrufen (falls nötig)
curl -sL "https://git.tobisniceshomelab.ddnsfree.com/api/v1/repos/<owner>/<repo>/git/refs/heads/main" \
-H "Authorization: token <TOKEN>"
Neues Projekt vorbereiten (seit 17.07.2026)
Bei einem neuen Projekt wird nicht nur der Workflow angewendet, sondern das komplette Gerüst gelegt:
-
Repo anlegen (privat, initialisiert):
~/.hermes/scripts/gitea-repo-create.sh <name> "<Kurzbeschreibung>"Die letzte Ausgabezeile ist
CLONE <URL>— diese merken. -
Lokal klonen:
git clone <clone-url> /tmp/<name> && cd /tmp/<name> -
Dateistruktur aufbauen (nur das Gerüst):
README.mdmit Ziel/Scope.gitignorepassend zur Sprache- Grundordner (
src/,docs/,tests/) mit Platzhaltern AGENTS.md(Projekt-Kontext für spätere Desktop-Arbeit)- Kein fertiger Code — nur das Skelett, das der Commander in Hermes Desktop weiterbaut
-
Committen + pushen:
git add -A && git commit -m "Projekt-Gerüst: Struktur + README" && git push -
Clone-Fallback (wenn Zielordner schon existiert):
git rm -r --cached . 2>/dev/null; rm -rf .git git init && git remote add origin <url> git fetch origin git checkout -b main origin/main git checkout origin/<branch> -- . -
Übergeben: Commander die Repo-URL melden + kurz beschreiben, was vorbereitet wurde.
Pitfalls
| Falle | Vermeidung |
|---|---|
Blobs direkt über /git/blobs erstellen → 404 |
Niemals; immer git add + Commit nutzen |
| Push/PR-Token reicht nicht für Repo-Anlage | gitea-repo-create.sh mit write:user-Token nutzen |
Repo-Anlage per Roh-curl erzwingen |
Nie — Token-Berechtigungen sind serverseitig, das Skript ist der einzige Weg |
| Grosse Dateien am Stück lesen → Kontext sprengt | Gezielt lesen über Zeilenbereiche (read_file mit offset/limit) |
| Direkt in Live-Checkout schreiben → Faden 8 | Immer im frischen Klon arbeiten, Vorschlagsbranch via PR |
Konsistenz mit MC2-Konventionen
- Sprache: Deutsch, direkt, kein Marketing-Sprech.
- Struktur: Kurze Beschreibung → Wann einsetzen → Konfiguration → Arbeitsablauf → Pitfalls → Konsistenz.
- Querverweise: Verweise auf Faden 8/R2, Auftragsbuch,
gitea-repo-create.sh. - Tabellen: Wo sinnvoll (Situationen, Konfiguration, Pitfalls) als Tabelle formatiert.
- Code-Blöcke: Alle Befehle als bash-Code-Blöcke mit klaren Variablen-Platzhaltern.
- Keine Secrets: Tokens werden referenziert (Ort), nicht ausgeschrieben.
Diese Datei wurde als Skill-Dokumentation im MC2-Repo erstellt. Sie ist Teil der Skills-Docs in docs/skills/.