LIVECODING=../training-exercises/livecoding
MUSTERLOESUNGEN=../training-exercises/spickzettel
TECHNIKCHECK=../training-exercises/technik-check
+SELECTED_BRANCHES=()
source lib.sh
echo ""
echo "Ohne --tag und ohne --local: Aktualisiert alle Branches zuerst auf Remote-Stand"
echo "(erfordert Remote-Zugriff und einheitliche Tags über alle Branches)."
+ echo ""
+ echo "Auswahl über schulung.conf (eine Branch-Angabe pro Zeile, # für Kommentare):"
+ echo " Ist schulung.conf vorhanden, werden nur die dort aufgeführten Branches"
+ echo " kopiert. technik-check und --livecoding-Branches werden immer kopiert."
+ echo " Ein --vorlage-Eintrag schließt automatisch den zugehörigen Lösungs-Branch"
+ echo " mit ein (sofern vorhanden). Ohne schulung.conf werden alle Branches kopiert."
exit 0 ;;
*) echo "Unbekannter Parameter: $1" >&2; exit 1 ;;
esac
--exclude=diff.sh
--exclude=push.sh
--exclude=reset.sh
+ --exclude=schulung.conf
+ --exclude=schulung.conf.example
)
checkout_branch() {
echo -e "\n${src} → ${dest#../training-exercises/}"
}
+load_schulung_config() {
+ local config="schulung.conf"
+ [ -f "$config" ] || return 0
+ local line solution
+ while IFS= read -r line; do
+ line="${line%%#*}"
+ read -r line <<< "$line"
+ [[ -n "$line" ]] || continue
+ SELECTED_BRANCHES+=("$line")
+ if [[ "$line" == *--vorlage ]]; then
+ solution="${line%--vorlage}"
+ SELECTED_BRANCHES+=("$solution")
+ fi
+ done < "$config"
+}
+
+is_selected() {
+ local branch="$1" b
+ [[ "$branch" == "springkafka/technik-check" ]] && return 0
+ [[ "$branch" == *--livecoding ]] && return 0
+ [ ${#SELECTED_BRANCHES[@]} -eq 0 ] && return 0
+ for b in "${SELECTED_BRANCHES[@]}"; do
+ [[ "$b" == "$branch" ]] && return 0
+ done
+ return 1
+}
+
+load_schulung_config
+if [ ${#SELECTED_BRANCHES[@]} -gt 0 ]; then
+ echo "schulung.conf geladen: ${#SELECTED_BRANCHES[@]} Branches ausgewählt."
+fi
+
if [ "$TAG_SUFFIX" = "" ] && ! $LOCAL; then
echo "Kein --tag angegeben — prüfe einheitliche Tags vor der Aktualisierung auf Remote-Stände..."
_common_suffixes=$(find_common_tag_suffixes) || {
echo -e "\nÜberspringe $branch"
continue
;;
+ esac
+ if ! is_selected "$branch"; then
+ continue
+ fi
+ case "$branch" in
springkafka/technik-check)
dest="$TECHNIKCHECK"
;;
--- /dev/null
+# Auswahl der Branches für copy.sh
+#
+# Regeln:
+# - Eine Branch-Angabe pro Zeile
+# - Leerzeilen und Zeilen, die mit # beginnen, werden ignoriert
+# - Ein --vorlage-Eintrag schließt automatisch den zugehörigen Lösungs-Branch mit ein
+# - Lösungs-Branches ohne --vorlage können explizit angegeben werden
+# - technik-check und --livecoding-Branches werden immer kopiert (hier nicht nötig)
+# - Ohne diese Datei werden alle Branches kopiert
+#
+# Kopiere diese Datei nach schulung.conf und passe sie für die aktuelle Schulung an.
+
+# --- Grundlagen ---
+grundlagen/simple-producer--vorlage # → kopiert auch grundlagen/simple-producer
+grundlagen/simple-consumer--vorlage # → kopiert auch grundlagen/simple-consumer
+
+# --- Producer / Consumer ---
+producer/spring-producer--vorlage # → kopiert auch producer/spring-producer
+consumer/spring-consumer--vorlage # → kopiert auch consumer/spring-consumer
+
+# --- Musterlösungen ohne Übung (explizit angeben) ---
+# producer/spring-producer--generics
+
+# --- Spring Kafka ---
+springkafka/spring-producer--vorlage # → kopiert auch springkafka/spring-producer
+springkafka/spring-consumer--kafkalistener--vorlage # nur wenn vorhanden