#!/bin/bash # Git 최신 소스 자동 업데이트 스크립트 # 서버에서 안전하게 최신 소스를 받기 위한 스크립트 # 스크립트 실행 권한 확인 및 부여 if [ ! -x "$0" ]; then echo "실행 권한이 없습니다. 권한을 부여합니다..." chmod +x "$0" echo "✅ 실행 권한이 부여되었습니다." fi echo "==========================================" echo "Git 최신 소스 업데이트 시작" echo "==========================================" # 현재 시간 출력 echo "시작 시간: $(date)" # Git 상태 확인 echo "현재 Git 상태 확인 중..." git status # 현재 브랜치 확인 CURRENT_BRANCH=$(git branch --show-current) echo "현재 브랜치: $CURRENT_BRANCH" # 로컬 변경사항이 있는지 확인 if ! git diff-index --quiet HEAD --; then echo "⚠️ 로컬에 커밋되지 않은 변경사항이 있습니다." echo "변경사항을 stash에 저장합니다..." git stash push -m "Auto-stash before pull at $(date)" echo "✅ 변경사항이 stash에 저장되었습니다." fi # 원격 저장소 정보 업데이트 echo "원격 저장소 정보 업데이트 중..." git fetch --all --prune # 현재 브랜치의 원격 브랜치와 비교 REMOTE_BRANCH="origin/$CURRENT_BRANCH" LOCAL_COMMIT=$(git rev-parse HEAD) REMOTE_COMMIT=$(git rev-parse $REMOTE_BRANCH 2>/dev/null) if [ "$LOCAL_COMMIT" = "$REMOTE_COMMIT" ]; then echo "✅ 이미 최신 버전입니다." else echo "새로운 업데이트가 있습니다. 최신 소스를 받습니다..." # 강제로 최신 소스 받기 (로컬 변경사항 무시) echo "원격 브랜치로 강제 리셋 중..." git reset --hard $REMOTE_BRANCH # 추적되지 않는 파일들 정리 echo "추적되지 않는 파일들 정리 중..." git clean -fd echo "✅ 최신 소스 업데이트 완료!" fi # 최종 상태 확인 echo "==========================================" echo "업데이트 후 Git 상태:" git log --oneline -5 echo "==========================================" # 완료 시간 출력 echo "완료 시간: $(date)" echo "✅ Git 최신 소스 업데이트가 완료되었습니다!" # Shell 스크립트 파일들에 실행 권한 부여 echo "" echo "🔧 Shell 스크립트 파일 권한 복원 중..." # 현재 디렉토리와 하위 디렉토리의 .sh 파일들을 찾아서 실행 권한 부여 find . -name "*.sh" -type f -exec chmod +x {} \; 2>/dev/null # 주요 스크립트 파일들 개별 권한 설정 if [ -f "git_update.sh" ]; then chmod +x git_update.sh echo "✅ git_update.sh 권한 설정 완료" fi if [ -f "start-server.sh" ]; then chmod +x start-server.sh echo "✅ start-server.sh 권한 설정 완료" fi if [ -f "stop-server.sh" ]; then chmod +x stop-server.sh echo "✅ stop-server.sh 권한 설정 완료" fi if [ -f "docker-run.sh" ]; then chmod +x docker-run.sh echo "✅ docker-run.sh 권한 설정 완료" fi if [ -f "docker-run-dev.sh" ]; then chmod +x docker-run-dev.sh echo "✅ docker-run-dev.sh 권한 설정 완료" fi if [ -f "scripts/docker-build.sh" ]; then chmod +x scripts/docker-build.sh echo "✅ scripts/docker-build.sh 권한 설정 완료" fi if [ -f "scripts/docker-run.sh" ]; then chmod +x scripts/docker-run.sh echo "✅ scripts/docker-run.sh 권한 설정 완료" fi if [ -f "scripts/docker-run-dev.sh" ]; then chmod +x scripts/docker-run-dev.sh echo "✅ scripts/docker-run-dev.sh 권한 설정 완료" fi echo "🔧 모든 Shell 스크립트 권한 복원 완료!" # stash 목록이 있으면 알림 STASH_COUNT=$(git stash list | wc -l) if [ $STASH_COUNT -gt 0 ]; then echo "" echo "📝 참고: stash에 저장된 변경사항이 $STASH_COUNT개 있습니다." echo " 필요시 'git stash pop'으로 복원할 수 있습니다." fi echo "=========================================="