diff --git a/scripts/backup-main.sh b/scripts/backup-main.sh index 39057554..353d6508 100755 --- a/scripts/backup-main.sh +++ b/scripts/backup-main.sh @@ -20,16 +20,26 @@ backup_repo() { cd "$repo_path" + # Check if this is a git repository + if ! git rev-parse --git-dir > /dev/null 2>&1; then + echo -e "${RED}❌ $repo_name: Not a git repository!${NC}" + cd .. + return 1 + fi + # Ensure we're on main - CURRENT_BRANCH=$(git branch --show-current) + CURRENT_BRANCH=$(git branch --show-current 2>/dev/null || echo "") if [ "$CURRENT_BRANCH" != "main" ]; then echo "Switching to main branch..." - git switch main + git switch main 2>/dev/null || git checkout main fi # Pull latest changes echo "Pulling latest changes..." - git pull origin main + if ! git pull origin main 2>/dev/null; then + echo -e "${YELLOW}⚠️ Could not pull latest changes (might be offline or no origin/main)${NC}" + # Continue anyway with local state + fi # Check if working directory is clean if [ -n "$(git status --porcelain)" ]; then @@ -43,10 +53,10 @@ backup_repo() { LATEST_BACKUP=$(git branch -r --sort=-committerdate 2>/dev/null | grep "origin/backup/main-" | head -1 | cut -d'/' -f2 || true) if [ -n "$LATEST_BACKUP" ]; then - MAIN_COMMIT=$(git rev-parse origin/main) - BACKUP_COMMIT=$(git rev-parse origin/$LATEST_BACKUP 2>/dev/null || true) + MAIN_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "") + BACKUP_COMMIT=$(git rev-parse origin/$LATEST_BACKUP 2>/dev/null || echo "") - if [ "$MAIN_COMMIT" = "$BACKUP_COMMIT" ]; then + if [ -n "$MAIN_COMMIT" ] && [ "$MAIN_COMMIT" = "$BACKUP_COMMIT" ]; then echo -e "${GREEN}✅ $repo_name: Already backed up in $LATEST_BACKUP${NC}" cd .. return 0 @@ -58,7 +68,14 @@ backup_repo() { echo "Creating backup branch: $BACKUP_BRANCH" git checkout -b $BACKUP_BRANCH - git push -u origin $BACKUP_BRANCH + + # Try to push, but continue even if it fails + if git push -u origin $BACKUP_BRANCH 2>/dev/null; then + echo -e "${GREEN}✅ Backup pushed to remote${NC}" + else + echo -e "${YELLOW}⚠️ Could not push backup to remote (backup exists locally only)${NC}" + fi + git checkout main echo -e "${GREEN}✅ $repo_name: Backup created successfully${NC}"