#!/bin/bash # TimeSafari Generated Assets Purge Script # Removes generated Android assets and resources from git history # Author: Matthew Raymer set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" echo "=== TimeSafari Generated Assets Purge ===" echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] Starting git history cleanup" # Check if we're in a git repository if [ ! -d ".git" ]; then echo "[ERROR] Not in a git repository. Please run this script from the project root." exit 1 fi # Check if we have uncommitted changes if [ -n "$(git status --porcelain)" ]; then echo "[ERROR] You have uncommitted changes. Please commit or stash them first." echo "Current status:" git status --short exit 1 fi # Create backup branch BACKUP_BRANCH="backup-before-asset-purge-$(date +%Y%m%d-%H%M%S)" echo "[INFO] Creating backup branch: $BACKUP_BRANCH" git branch "$BACKUP_BRANCH" echo "[INFO] Starting git filter-branch to remove generated assets..." # Use git filter-branch to remove the directories from history git filter-branch --force --index-filter ' # Remove generated Android assets directory git rm -rf --cached --ignore-unmatch android/app/src/main/assets/public/ 2>/dev/null || true # Remove generated Android resources (but keep config files) git rm -rf --cached --ignore-unmatch android/app/src/main/res/drawable*/ 2>/dev/null || true git rm -rf --cached --ignore-unmatch android/app/src/main/res/mipmap*/ 2>/dev/null || true git rm -rf --cached --ignore-unmatch android/app/src/main/res/values/ic_launcher_background.xml 2>/dev/null || true # Keep configuration files git add android/app/src/main/res/values/strings.xml 2>/dev/null || true git add android/app/src/main/res/values/styles.xml 2>/dev/null || true git add android/app/src/main/res/layout/activity_main.xml 2>/dev/null || true git add android/app/src/main/res/xml/config.xml 2>/dev/null || true git add android/app/src/main/res/xml/file_paths.xml 2>/dev/null || true ' --prune-empty --tag-name-filter cat -- --all echo "[INFO] Cleaning up git filter-branch temporary files..." rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now --aggressive echo "[SUCCESS] Generated assets purged from git history!" echo "[INFO] Backup branch created: $BACKUP_BRANCH" echo "[INFO] Repository size should be significantly reduced" echo "" echo "Next steps:" echo "1. Test that the repository works correctly" echo "2. Force push to remote: git push --force-with-lease origin " echo "3. Inform team members to re-clone or reset their local repositories" echo "4. Delete backup branch when confident: git branch -D $BACKUP_BRANCH"