diff --git a/deploy-production.sh b/deploy-production.sh index 245f5f6..ebe5e8c 100755 --- a/deploy-production.sh +++ b/deploy-production.sh @@ -6,8 +6,20 @@ echo "=== Harheimer TC Deployment ===" echo "" -# 1. Handle local changes and Git Pull -echo "1. Handling local changes and pulling latest from git..." +# 1. BACKUP: Laufende Produktivdaten VOR allen Git-Operationen sichern +echo "1. Backing up current production data (pre-git)..." + +# Fresh backup dir +rm -rf .backup +mkdir -p .backup + +# Backup server data (JSON) und CSVs immer vom Dateisystem, nicht aus 'stash' +cp -a server/data .backup/data_backup 2>/dev/null || echo " No server/data to backup" +mkdir -p .backup/public_data +cp -a public/data/*.csv .backup/public_data/ 2>/dev/null || echo " No public CSVs to backup" + +# 2. Handle local changes and Git Pull +echo "2. Handling local changes and pulling latest from git..." # Check if there are merge conflicts first if [ -n "$(git status --porcelain | grep '^UU\|^AA\|^DD')" ]; then @@ -27,26 +39,8 @@ if [ $? -ne 0 ]; then exit 1 fi -# 2. Backup Production Data (from stash) -echo "" -echo "2. Backing up production data from stash..." - -# Create backup directory -mkdir -p .backup - -# Try to restore stashed data temporarily to backup it -echo " Restoring stashed data for backup..." -git stash show -p | git apply --index 2>/dev/null || echo " No stashed data to restore" - -# Backup production data -cp -r server/data .backup/data_backup 2>/dev/null || echo " No server/data to backup" -cp public/data/termine.csv .backup/termine.csv 2>/dev/null || echo " No termine.csv to backup" -cp public/data/mannschaften.csv .backup/mannschaften.csv 2>/dev/null || echo " No mannschaften.csv to backup" -cp public/data/spielsysteme.csv .backup/spielsysteme.csv 2>/dev/null || echo " No spielsysteme.csv to backup" -cp public/data/vereinsmeisterschaften.csv .backup/vereinsmeisterschaften.csv 2>/dev/null || echo " No vereinsmeisterschaften.csv to backup" - -# Reset any changes from stash restore -git reset --hard HEAD +# Reset any accidental changes from stash restore (should be none now) +git reset --hard HEAD >/dev/null 2>&1 # 3. Install dependencies echo "" @@ -71,14 +65,25 @@ if [ $? -ne 0 ]; then exit 1 fi -# 6. Restore Production Data +# 6. Restore Production Data (überschreibe Repo-Defaults mit Backup) echo "" echo "6. Restoring production data..." -cp -r .backup/data_backup/* server/data/ 2>/dev/null || echo "No data to restore" -cp .backup/termine.csv public/data/termine.csv 2>/dev/null || echo "No termine.csv to restore" -cp .backup/mannschaften.csv public/data/mannschaften.csv 2>/dev/null || echo "No mannschaften.csv to restore" -cp .backup/spielsysteme.csv public/data/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to restore" -cp .backup/vereinsmeisterschaften.csv public/data/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to restore" + +# Stelle server/data vollständig wieder her (inkl. config.json, users.json, news.json, sessions.json, members.json, membership-applications) +if [ -d .backup/data_backup ]; then + mkdir -p server/data + cp -a .backup/data_backup/. server/data/ +else + echo "No server/data to restore" +fi + +# Stelle alle CSVs wieder her +if ls .backup/public_data/*.csv >/dev/null 2>&1; then + mkdir -p public/data + cp -a .backup/public_data/*.csv public/data/ +else + echo "No public CSVs to restore" +fi # 7. Cleanup backup and stash echo ""