Neu nach Konsultation von chatGPT

This commit is contained in:
2025-06-25 12:47:19 +02:00
parent b495268073
commit 8e6b57abc3
5 changed files with 148 additions and 157 deletions

98
commit-wrapper.sh Normal file
View File

@ -0,0 +1,98 @@
#!/bin/bash
set -euo pipefail
cd "$(dirname "$0")"
LOGFILE="archiv.log"
TIMESTAMP() { date '+%Y-%m-%d %H:%M:%S'; }
log() {
echo "[$(TIMESTAMP)] $1" | tee -a "$LOGFILE"
}
RESTORE_SCRIPT="./restore-archiv.sh"
log "➡️ Starte Archivierungslauf..."
# 1. Dateien aus Neu/ prüfen und nach Archiv/ kopieren
for file in Neu/*; do
[ -e "$file" ] || continue
base=$(basename "$file")
target="Archiv/$base"
if [ -e "$target" ]; then
log "⚠️ Datei '$base' existiert bereits im Archiv. Archivierung abgebrochen."
echo "⚠️ Datei '$base' existiert bereits im Archiv! Bitte umbenennen oder löschen."
exit 1
fi
done
# Kopieren & Löschen
for file in Neu/*; do
[ -e "$file" ] || continue
base=$(basename "$file")
target="Archiv/$base"
cp "$file" "$target"
log "✅ '$base' nach Archiv kopiert."
done
for file in Neu/*; do
[ -e "$file" ] || continue
base=$(basename "$file")
rm "$file"
log "🧹 '$base' aus Neu gelöscht."
done
# 2. Änderungen vormerken (inkl. Löschungen)
# Änderungen vollständig vormerken (auch neue Dateien)
git add --all
log "📝 Alle Änderungen vorgemerkt (git add --all)."
# Prüfen, ob es Änderungen gibt (gestaged oder nicht)
if git status --porcelain | grep . >/dev/null; then
# es gibt Änderungen, Commit starten
if git commit -m "Archivierung von Dateien aus Neu am $(TIMESTAMP)"; then
log "✅ Commit erfolgreich."
else
# Commit fehlgeschlagen: Restore ausführen ...
log "❌ Commit fehlgeschlagen. Versuche Archiv wiederherzustellen..."
echo "⚠️ Commit abgebrochen, da Änderungen im Archiv blockiert wurden."
if [ -x "$RESTORE_SCRIPT" ]; then
"$RESTORE_SCRIPT"
log "♻️ Archiv wurde automatisch wiederhergestellt."
echo " Archiv wurde auf den letzten Commit zurückgesetzt."
else
log "❌ Restore-Skript '$RESTORE_SCRIPT' nicht gefunden oder nicht ausführbar!"
echo "⚠️ Restore-Skript nicht gefunden oder nicht ausführbar!"
fi
exit 1
fi
else
log "📭 Keine Änderungen zum Committen."
echo "Keine Änderungen zum Committen."
exit 0
fi
# 3. Commit versuchen
if git diff --cached --quiet; then
log "📭 Keine Änderungen zum Committen."
echo "Keine Änderungen zum Committen."
exit 0
else
if git commit -m "Archivierung von Dateien aus Neu am $(TIMESTAMP)"; then
log "✅ Commit erfolgreich."
exit 0
else
log "❌ Commit fehlgeschlagen. Versuche Archiv wiederherzustellen..."
echo "⚠️ Commit abgebrochen, da Änderungen im Archiv blockiert wurden."
if [ -x "$RESTORE_SCRIPT" ]; then
"$RESTORE_SCRIPT"
log "♻️ Archiv wurde automatisch wiederhergestellt."
echo " Archiv wurde auf den letzten Commit zurückgesetzt."
else
log "❌ Restore-Skript '$RESTORE_SCRIPT' nicht gefunden oder nicht ausführbar!"
echo "⚠️ Restore-Skript nicht gefunden oder nicht ausführbar!"
fi
exit 1
fi
fi