]> juplo.de Git - demos/kafka/training/commitdiff
copy.sh: Remote-Stände aktualisieren, wenn kein Tag-Suffix angegeben
authorKai Moritz <kai.milan.moritz@googlemail.com>
Sun, 31 May 2026 13:41:47 +0000 (13:41 +0000)
committerKai Moritz <kai.milan.moritz@googlemail.com>
Sun, 31 May 2026 13:41:47 +0000 (13:41 +0000)
Ohne Tag-Suffix-Parameter prüft das Skript vor der Aktualisierung, ob
alle Branches (inkl. grundlagen/docker) einheitlich getagged sind. Fehlt
einem Branch ein gemeinsames Tag, bricht das Skript mit einer Fehlermeldung
ab. Liegt ein gemeinsames Tag vor, werden alle Branches per fetch+reset auf
den jeweiligen origin-Stand gebracht, bevor das Kopieren beginnt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
copy.sh

diff --git a/copy.sh b/copy.sh
index b5417566a1157eb0091a12a7fcec4e0f018afa18..ddd1d199715a5cd8d2a6e774416dc3c9f1e0379a 100755 (executable)
--- a/copy.sh
+++ b/copy.sh
@@ -52,6 +52,41 @@ sync_to() {
   "${RSYNC_OPTS[@]}" . "$1"
 }
 
+if [ "$TAG_SUFFIX" = "" ]; then
+  echo "Kein Tag-Suffix angegeben — prüfe einheitliche Tags vor der Aktualisierung auf Remote-Stände..."
+
+  _common_suffixes=""
+  for i in grundlagen__docker $BRANCHES; do
+    declare -n _bref=$i
+    _suffixes=$(git tag -l "${_bref}--*" | sed "s|^${_bref}--||" | sort)
+    if [ -z "$_suffixes" ]; then
+      echo "Fehler: Branch '$_bref' hat keine Tags." >&2
+      echo "  Alle Branches müssen einheitlich getagged sein, bevor auf Remote-Stände aktualisiert wird." >&2
+      exit 1
+    fi
+    if [ -z "$_common_suffixes" ]; then
+      _common_suffixes="$_suffixes"
+    else
+      _common_suffixes=$(comm -12 <(echo "$_common_suffixes") <(echo "$_suffixes"))
+      if [ -z "$_common_suffixes" ]; then
+        echo "Fehler: Branch '$_bref' hat kein gemeinsames Tag mit allen vorhergehenden Branches." >&2
+        echo "  Alle Branches müssen einheitlich getagged sein, bevor auf Remote-Stände aktualisiert wird." >&2
+        exit 1
+      fi
+    fi
+  done
+  echo "Einheitliche Tags vorhanden: $(echo "$_common_suffixes" | tr '\n' ' ')"
+
+  echo "Aktualisiere alle Branches auf Remote-Stand..."
+  git fetch origin
+  for i in grundlagen__docker $BRANCHES; do
+    declare -n _bref=$i
+    git checkout "$_bref"
+    git reset --hard "origin/$_bref"
+  done
+  git checkout scripting
+fi
+
 EXPECTED=$(mktemp)
 trap 'rm -f "$EXPECTED"' EXIT