# [PD 수동 집행 안내] BT5-Dev Unity 자동 sync C안 — 최초 1회 셋업

> **발행일**: 2026-04-23 (2026-04-23 경로 변경·원격 push 완료 반영 갱신)
> **대상**: PD님 본 PC (DESKTOP-RD7PUKN) 및 향후 다른 PC
> **선행**: PM 집행 + PD 집행 완료분 (하단 3개 섹션 참조)
> **남은 작업**: **`paths.local.json` 생성 1건 + 중복 하위 폴더 정리 확인**

---

## 🟢 PD 집행 완료 (2026-04-23 확인)

- **Unity 프로젝트 이동**: `E:/NerdNavis/EerieVillage/EerieVillage/` → **`E:/EerieVillage/`** (단일 루트로 정리)
- **Gitea 레포 생성**: `https://burning.i234.me/NerdNavis_AiDev/EerieVillage.git`
- **Discord 웹훅 연결**: 푸시 알림 활성

## 🟢 PM 집행 완료

- Unity 프로젝트 git init + 초기 commit `9f689c1`
- **원격 push 완료**: `E:/EerieVillage` → `origin/main` (PM 세션에서 수행)
- `.gitignore` Unity 표준 배치
- `GitAutoSync.cs` Editor 스크립트 배치 (`Assets/Editor/GitAutoSync/`)
- `scripts/unity_auto_sync.sh` BT 본 레포 신설 + **버그 fix**(환경변수·고정 경로 우선·git rev-parse 후순위)
- `paths.local.json.template` 갱신 (`UNITY_GIT_REMOTE` 필드 + 새 경로 예시)

## 1. 개요

BT5-Dev C안 승인에 따라 Unity 프로젝트 자동 sync 체계가 구축되었습니다.
- **Unity Editor 측**: `Assets/Editor/GitAutoSync/GitAutoSync.cs` — 시작 시 자동 pull, 종료 시 자동 push, Menu "Tools/Git/*"
- **BT 본 레포 측**: `scripts/unity_auto_sync.sh` — 실제 git 작업 수행 (검증된 BT 스크립트 체계 재사용)

## ⏳ 남은 작업 (PD 집행 필요)

---

## 2. 남은 PD 집행 — 1~2단계

### 2-1. `paths.local.json` 생성 (필수·최종 단계)

PD님 PC의 `E:/BurningTimes/paths.local.json` 파일을 **template 복사 후 값 입력**:

```powershell
cd E:\BurningTimes
Copy-Item paths.local.json.template paths.local.json
```

그 다음 `paths.local.json` 열어 아래 필드 실값 입력:

```json
{
  "UNITY_PROJECT_ROOT": "E:/EerieVillage",
  "UNITY_GIT_REMOTE": "https://burning.i234.me/NerdNavis_AiDev/EerieVillage.git",
  "FRAMEWORK_PKG_ROOT": "__필요 시 입력__",
  "DISCORD_WEBHOOK": "__기존 BT 웹훅 URL__"
}
```

- `UNITY_PROJECT_ROOT` = **`E:/EerieVillage`** (2026-04-23 경로 변경 후)
- 나머지는 기존 BT 값 유지

### 2-2. `E:/EerieVillage/EerieVillage/` 중복 하위 폴더 확인 (권장)

경로 이동 과정에서 `E:/EerieVillage/` 내부에 또 다른 Unity 프로젝트 폴더 `EerieVillage/`가 생긴 것을 PM이 실측. Assets·Library·ProjectSettings·Temp 등 완전 구조 존재. 선택지:
- **옵션 A** (추정): 이동 직전 Unity가 새 프로젝트 생성한 잔재 → **삭제 권장** (C6-1 백업 후)
- **옵션 B**: PD님이 의도적으로 유지한 별도 프로젝트 → 그대로 둠

PD 확인 후 PM이 처리 (C6-1 원본 보호 원칙상 임의 삭제 금지).

### 2-3. 자동 sync 연동 검증 (첫 실행)

Unity Editor로 `E:/EerieVillage` 프로젝트 열기:
- Unity Console에 `[GitAutoSync] Unity Editor 시작 — auto pull` 로그 확인
- 상단 메뉴 **"Tools > Git > Status"** — 작업 트리 상태 표시
- 상단 메뉴 **"Tools > Git > Push Now"** (`Ctrl+Shift+P`) — 즉시 add+commit+push

Discord 채널에 push 알림 도착하면 전 체계 정상.

---

## 3. 일상 운용 — PD님 개발 시 동작

### 자동 동작
| 시점 | 동작 | 근거 |
|------|------|------|
| Unity Editor 시작 | 자동 `git pull` (ff-only) | `GitAutoSync.OnEditorStart` → `unity_auto_sync.sh pull` |
| Unity Editor 종료 | 자동 `git add -A && commit && push` | `GitAutoSync.OnEditorQuit` → `unity_auto_sync.sh push` |

### 수동 발동 메뉴 (Unity Editor 상단)
- **Tools/Git/Pull Now** (`Ctrl+Shift+G`) — 즉시 pull
- **Tools/Git/Push Now** (`Ctrl+Shift+P`) — 즉시 add+commit+push
- **Tools/Git/Status** — 현재 작업 트리 상태 + 최근 3 commit
- **Tools/Git/Init Repo (최초 1회)** — 레포 재초기화 (이미 완료)
- **Tools/Git/Toggle Auto Pull On Load** — 자동 pull 토글
- **Tools/Git/Toggle Auto Push On Quit** — 자동 push 토글

### 커밋 메시지 자동 생성
```
auto: 2026-04-23 15:30 · scene: MainGameScene · 7 files
```

### 로그 위치
모든 sync 이력: `$HOME/.claude/burningtimes-audit/unity_sync/YYYY-MM-DD.log`

### 실패 처리
- **pull 실패 (충돌)**: Unity Console Error + Dialog 알림 → PD 수동 해결. 자동 rebase·force 금지 (C6-2 데이터 보호)
- **push 실패 (네트워크)**: 로컬 commit은 유지 → 다음 push 시 재시도
- **스크립트 부재**: Unity Console Warning "BT 본 레포 확인 필요"

---

## 4. 다른 PC 이관 시 (향후)

1. BT 본 레포 `git clone` + setup 스크립트 실행
2. Unity 프로젝트 `git clone https://burning.i234.me/NerdNavis_AiDev/EerieVillage.git` + Unity Hub로 열기
3. `paths.local.json` 2-2와 동일하게 설정 (PC별 `UNITY_PROJECT_ROOT` 경로 조정)
4. Unity Editor 시작 시 자동 pull 동작 확인

---

## 5. 연관 자산

- **Unity Editor 스크립트**: `E:/NerdNavis/EerieVillage/EerieVillage/Assets/Editor/GitAutoSync/GitAutoSync.cs`
- **BT 본 레포 스크립트**: `scripts/unity_auto_sync.sh`
- **Template**: `paths.local.json.template` (`UNITY_GIT_REMOTE` 필드)
- **PD 지시 로그**: `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` BT5-Dev

## 6. 주의

- Unity Editor **비정상 종료 시**(크래시·강제 종료) `quitting` 이벤트 미발동 → 자동 push 생략. 다음 정상 종료 or 수동 "Push Now"로 보완
- 대용량 바이너리 에셋(.png·.fbx 등) 축적 시 git LFS 도입 권고 (별도 안건화 필요)
- Library/·Temp/·Logs/는 `.gitignore` 대상 — PC별 별도 생성됨
- `paths.local.json` 은 **`.gitignore` 대상** (PC별 실값, 공유 금지)
