Files
qt6-migration-pipeline/scripts/README-fix-submodule-branches.md
T

63 lines
1.9 KiB
Markdown

# fix-submodule-branches-prod.sh
Bash-Script zum rekursiven Prüfen von Git-Submodulen und Umschalten von `detached HEAD` auf den passenden Branch.
## Verhalten
Für jedes Submodul gilt:
1. Wenn in `.gitmodules` ein `branch` konfiguriert ist, wird **dieser** verwendet.
2. Wenn **kein** `branch` konfiguriert ist, wird der **Default-Branch von `origin`** verwendet.
3. Standardmäßig wird **nur bei `detached HEAD`** umgeschaltet.
4. Optional kann mit `--force-switch` auch von einem anderen Branch auf den Ziel-Branch gewechselt werden.
5. Submodule mit **uncommitted changes** werden aus Sicherheitsgründen **übersprungen**.
6. Verschachtelte Submodule werden rekursiv verarbeitet.
## Voraussetzungen
- Bash
- Git
## Nutzung
```bash
chmod +x fix-submodule-branches-prod.sh
./fix-submodule-branches-prod.sh [optionen] [root-dir]
```
## Optionen
- `-n`, `--dry-run`
Zeigt nur an, was ausgeführt würde.
- `--force-switch`
Wechselt auch dann auf den Ziel-Branch, wenn das Submodul bereits auf einem anderen Branch steht.
- `--init-missing`
Initialisiert fehlende/nicht initialisierte Submodule automatisch.
- `-h`, `--help`
Zeigt die Hilfe an.
## Beispiele
```bash
./fix-submodule-branches-prod.sh --dry-run /pfad/zum/repo-root
./fix-submodule-branches-prod.sh --init-missing /pfad/zum/repo-root
./fix-submodule-branches-prod.sh --init-missing --force-switch /pfad/zum/repo-root
```
## Ausgabe
Am Ende wird eine Zusammenfassung ausgegeben, z. B.:
- Anzahl geprüfter Repositories mit `.gitmodules`
- Anzahl gefundener Submodule
- Anzahl gefixter `detached HEAD`/Branch-Wechsel
- Anzahl bereits korrekter Branches
- Anzahl übersprungener dirty Submodule
- Anzahl übersprungener Fälle/Fehler
## Sicherheitsverhalten
Das Script überspringt Submodule mit lokalen Änderungen (`git status --porcelain` nicht leer), damit keine uncommitted Änderungen durch Branch-Wechsel gefährdet werden.