## Branch-Struktur
-Branch-Namen kodieren ihre Rolle durch Suffixe:
+Branch-Namen kodieren ihre Rolle durch Suffixe. `copy.sh` wertet diese Suffixe aus, um das Zielverzeichnis zu bestimmen:
-| Suffix | Bedeutung |
-|--------|-----------|
-| *(keiner)* | Lösung / Musterlösung |
-| `--vorlage` | Übungsvorlage für Teilnehmer |
-| `--livecoding` | Startpunkt für Live-Coding-Demo (Schritt 0) |
-| `--livecoding--schritte` | Schrittweise Entwicklung einer Live-Coding-Session |
+| Suffix | Bedeutung | Zielverzeichnis (`copy.sh`) |
+|--------|-----------|----------------------------|
+| *(keiner)* | Lösung / Musterlösung | `../spickzettel/<branch>` |
+| `--vorlage` | Übungsvorlage für Teilnehmer | `../vorlagen/<branch-ohne-suffix>` |
+| `--livecoding` | Startpunkt für Live-Coding-Demo (Schritt 0) | `../livecoding/<branch-ohne-suffix>` |
+| `--livecoding--schritte` | Schrittweise Entwicklung einer Live-Coding-Session | *(wird nicht kopiert)* |
Branch-Name-Präfixe gruppieren Übungen nach Thema:
- `grundlagen/*` — Kafka-Grundlagen mit reinem Java-Client
| `reset.sh` | Ohne Argument: setzt alle Branches auf `origin/<branch>` zurück. Mit Argument: auf Tag `<branch>--<prefix>` |
| `diff.sh` | Ohne Arg: lokaler Branch gegen `origin/<branch>`. Ein Arg: gegen `<branch>--<suffix>`. Zwei Args: `<branch>--<suffix1>` gegen `<branch>--<suffix2>` |
| `build.sh` | Baut alle Branches (erkennt Maven/Gradle automatisch); `--vorlage`-Branches werden übersprungen. Mit `--publish`: Docker-Images veröffentlichen |
-| `copy.sh` | Kopiert Branches in `../vorlagen`-, `../livecoding`-, `../spickzettel`-Verzeichnisse (mit `--delete`: entfernte Dateien werden auch im Ziel gelöscht). Verzeichnisse zu nicht mehr gelisteten Branches werden automatisch bereinigt. Optionaler Tag-Suffix als erstes Argument kopiert den jeweiligen Tag-Stand. Mit `--nexus-url=<url>` werden Gradle-Setups anschließend für einen internen Nexus gepatcht |
+| `copy.sh` | Kopiert Branches anhand ihres Suffix in `../vorlagen/`, `../livecoding/` oder `../spickzettel/` (siehe Suffix-Tabelle oben); `--livecoding--schritte`-Branches werden übersprungen. `rsync --delete` ist immer aktiv. Verzeichnisse zu nicht mehr gelisteten Branches werden automatisch bereinigt. Optionaler Tag-Suffix als erstes Argument kopiert den jeweiligen Tag-Stand. Mit `--nexus-url=<url>` werden Gradle-Setups anschließend für einen internen Nexus gepatcht |
| `patch-nexus.sh` | Patcht `build.gradle` (Nexus als Repository), `settings.gradle` (pluginManagement) und optional mit `--gradle-dist-url=<url>` auch `gradle-wrapper.properties`. Wird aus dem Zielverzeichnis (`../vorlagen/`) aufgerufen |
Nach Massenoperationen immer zu `scripting` zurückkehren — Skripte führen am Ende `git checkout scripting` aus.