From b22a2a26eadf377411fe0186a3d20edb5a6816a9 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sun, 31 May 2026 00:51:37 +0000 Subject: [PATCH] =?utf8?q?copy.sh:=20--delete=20f=C3=BCr=20rsync,=20veralt?= =?utf8?q?ete=20Verzeichnisse=20bereinigen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit - rsync --delete: beim erneuten Kopieren werden aus dem Branch entfernte Dateien auch im Zielverzeichnis gelöscht - Nach dem Kopieren: Verzeichnisse in vorlagen/, livecoding/, spickzettel/, die keinem aktuellen Branch mehr entsprechen, werden gelöscht - Pfadberechnung im case-Statement vereinheitlicht (dest-Variable) - trap sichert Cleanup der temporären Datei auch bei Fehlerabbruch Co-Authored-By: Claude Sonnet 4.6 --- copy.sh | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/copy.sh b/copy.sh index 6dc43b73..4f00b127 100755 --- a/copy.sh +++ b/copy.sh @@ -23,6 +23,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" RSYNC_OPTS=( rsync -av + --delete --exclude=.git --exclude=target --exclude=.idea @@ -43,11 +44,15 @@ sync_to() { "${RSYNC_OPTS[@]}" . "$1" } +EXPECTED=$(mktemp) +trap 'rm -f "$EXPECTED"' EXIT + if [ "$TAG_SUFFIX" != "" ]; then git checkout "grundlagen/docker--${TAG_SUFFIX}" else git checkout grundlagen/docker fi +echo "$VORLAGEN/grundlagen/docker" >> "$EXPECTED" sync_to "$VORLAGEN/grundlagen/docker/" for i in $BRANCHES; do @@ -60,24 +65,37 @@ for i in $BRANCHES; do case "$branch" in *--livecoding--schritte) echo "Ignoriere Einzelschritte eines Live-Codings: $branch" + continue ;; *--vorlage) vorlage="${branch%--vorlage}" # Sonderfall: technik-check gehört thematisch zu den Grundlagen if [ "$vorlage" = "springkafka/technik-check" ]; then - sync_to "$VORLAGEN/grundlagen/technik-check/" + dest="$VORLAGEN/grundlagen/technik-check" else - sync_to "$VORLAGEN/$vorlage/" + dest="$VORLAGEN/$vorlage" fi ;; *--livecoding) - livecoding="${branch%--livecoding}" - sync_to "$LIVECODING/$livecoding/" + dest="$LIVECODING/${branch%--livecoding}" ;; *) - sync_to "$MUSTERLOESUNGEN/$branch/" + dest="$MUSTERLOESUNGEN/$branch" ;; esac + echo "$dest" >> "$EXPECTED" + sync_to "$dest/" +done + +echo -e "\nBereinige veraltete Verzeichnisse..." +for base in "$VORLAGEN" "$LIVECODING" "$MUSTERLOESUNGEN"; do + [ -d "$base" ] || continue + while IFS= read -r actual; do + if ! grep -qxF "$actual" "$EXPECTED"; then + echo " Entferne: $actual" + rm -rf "$actual" + fi + done < <(find "$base" -mindepth 2 -maxdepth 2 -type d | sort) done if [ "$NEXUS_URL" != "" ]; then -- 2.39.5