# worktree 작업용 원격 브랜치 자동 Push (task-1828 후속)

## 목적
로컬 micro-commit(task-1828)에 더해, 작업용 원격 브랜치에 주기적 auto-push로 물리적 서버 장애 대비 백업 확보.
main 브랜치는 깔끔하게 유지.

## 구현

### 1. worktree_manager.py — worktree 생성 시 원격 브랜치 자동 생성

**파일**: `/home/jay/workspace/scripts/worktree_manager.py`

worktree 생성(cmd_create) 시:
```python
# 로컬 브랜치 생성 후 원격에도 push
branch_name = f"task/{task_id}-{team_short}"
subprocess.run(["git", "push", "-u", "origin", branch_name], cwd=worktree_path)
```

### 2. auto-commit hook에 auto-push 추가

**파일**: `/home/jay/workspace/hooks/auto-commit.sh`

기존 auto-commit hook에 push 로직 추가:
```bash
# auto-commit 후 원격 push (10분 디바운스)
LAST_PUSH_FILE="/tmp/.git-last-push-$(echo $PWD | md5sum | cut -c1-8)"
LAST_PUSH=$(cat "$LAST_PUSH_FILE" 2>/dev/null || echo 0)
NOW=$(date +%s)

if (( NOW - LAST_PUSH > 600 )); then  # 10분
    git -C "$PWD" push origin HEAD --quiet 2>/dev/null &
    echo "$NOW" > "$LAST_PUSH_FILE"
fi
```

- 10분 디바운스: 매 커밋마다 push하면 과도하므로 10분 간격
- `--quiet`: 출력 최소화
- `&`: 백그라운드 실행 (봇 작업 블로킹 방지)
- main 브랜치에서는 스킵 (기존 로직 유지)

### 3. worktree_manager.py — finish 시 원격 wip 브랜치 삭제

**파일**: `/home/jay/workspace/scripts/worktree_manager.py`

finish(merge/keep) 완료 후:
```python
# 머지 완료 후 원격 wip 브랜치 정리
subprocess.run(
    ["git", "push", "origin", "--delete", branch_name],
    capture_output=True
)
```

### 4. GitHub 원격 설정 확인

각 프로젝트에 origin이 설정되어 있는지 확인 필요:
```bash
cd /home/jay/workspace && git remote -v
cd /home/jay/projects/insuwiki && git remote -v
```

origin이 없는 프로젝트는 push 스킵 (에러 무시).

## 주의사항
- main/master 브랜치에는 절대 auto-push 안 함
- push 실패 시 조용히 무시 (네트워크 문제 등)
- `.env.keys`, 보안 파일은 `.gitignore`에 있으므로 push 안 됨
- wip 브랜치 이름 규칙: `task/{task_id}-{team_short}` (예: task/1828-dev1)

## 검증 시나리오
1. worktree 생성 → GitHub에 `task/1828-dev1` 브랜치 생성 확인
2. 10분 경과 후 auto-push → GitHub 브랜치에 최신 커밋 반영
3. finish merge → GitHub에서 wip 브랜치 삭제 확인
4. main 브랜치 push 안 됨 확인
5. origin 없는 프로젝트에서 에러 없이 스킵