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

1.9 KiB

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

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

./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.