## 2026-06-01 — Git refs 사이드바 브랜치별 ahead/behind 배지 + Git 리포에서도 SVN 탭 노출(듀얼 VCS)

### 배경

Git 클라이언트의 refs 사이드바는 브랜치 이름만 보여줘서, 어떤 로컬 브랜치가 upstream보다 앞서거나(push 대기) 뒤처졌는지(pull/fetch 대기) 한눈에 알 수 없었다. 또 SVN 탭은 `vcs_type === 'svn'`일 때만 떠서, Git 리포지토리에서 보조로 SVN을 함께 쓰는 경우 SVN 패널에 접근할 수 없었다.

### 주요 변경

#### 1. 브랜치별 ahead/behind 추적 배지 (`e230261`)

- **서버**: `getGitRefs`가 `git for-each-ref --format=...%(upstream:track)... refs/heads` 한 번으로 각 로컬 브랜치의 `upstream`·`ahead`·`behind`를 계산해 반환. 원격(remotes/*)에는 추적 정보 없음(의도).
- **클라이언트**: `GitRef`에 `upstream`/`ahead`/`behind` 추가. refs 사이드바 로컬 브랜치 행에 `N↑`(emerald, 앞섬) / `N↓`(amber, 뒤처짐) 배지를 둥근 박스로 표시(둘 다 0이면 미표시). fetch/pull/push 후 자동 새로고침으로 갱신.
- behind 카운트는 git이 로컬에 알고 있는 remote-tracking ref 기준 → `fetch` 후 최신화(표준 git 동작).

#### 2. Git 리포에서도 SVN 탭 노출 (듀얼 VCS) (`7649975`)

- SVN 탭/라우트 게이트에서 `vcs_type !== 'svn'` 조건을 제거하고 **`svn_enabled`만으로 판단**. Git 리포지토리에서도 SVN 작업 사본 패널을 함께 띄울 수 있음.
- 서버 `resolveSvnPath`도 동일하게 `svn_enabled`만 검사.

### 수정된 주요 파일

| 파일 | 변경 내용 |
|------|----------|
| `src/server/services/worktree-manager.ts` | `getGitRefs`에 `for-each-ref` 기반 per-branch upstream/ahead/behind 계산 |
| `src/client/src/api/projects.ts` | `GitRef`에 `upstream`/`ahead`/`behind` 필드 |
| `src/client/src/components/GitStatusPanel.tsx` | 로컬 브랜치 행에 ahead/behind 배지 렌더 |
| `src/client/src/components/ProjectDetail.tsx` | SVN 탭 표시 조건을 `svn_enabled`로 완화 |
| `src/server/routes/svn.ts` | `resolveSvnPath` 게이트를 `svn_enabled`로 완화 |
