Adds script to recursively check Git submodules and switch from detached HEAD to the appropriate branch.
Qt6 Migration CI / migrate (push) Waiting to run
Qt6 Migration CI / migrate (push) Waiting to run
This commit is contained in:
2 files changed
+347
No files matched your search
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user