반응형
SVN 커밋이 안 될 때 실제로 겪은 상황
SVN으로 소스 관리를 하다 보면
어느 날 갑자기 커밋이 안 되는 프로젝트가 생기곤 한다... 개빡침..
나도 똑같은 이클립스 환경 같은 SVN 리포지토리에서
A 프로젝트는 정상 커밋이 되는데, B 프로젝트는 아무 반응 없이 실패하는 상황을 겪었다.
"설정이 다른 것도 아닌데, 왜 이 프로젝트만 안 되지?"
결국 확인해보니, 원인은 파일 잠금(Lock) 상태와 숨겨진 설정 차이에 있었다.
1. 파일이 lock 상태인지 확인해보기
- SVN은 파일을 lock(잠금) 상태로 지정할 수 있음
- 누군가가 해당 파일을 Lock 해두었거나, 내가 Lock 후 Release 안 했을 경우
→ 커밋 시도해도 아무 반응 없이 멈춤
✅ 해결 방법:
- TortoiseSVN 기준: 해당 파일 우클릭 → "Release lock" 또는 "Get Lock"으로 상태 확인/변경
- 이클립스 기준: Team → Show Properties로 lock 정보 확인 가능
2. SVN 상태 갱신 (Clean up)
때때로 작업 중 SVN 메타정보가 꼬여서 커밋이 실패하는 경우도 많음
이럴 땐 Clean up 기능으로 상태를 정리해줘야 함
✅ 해결 방법:
- TortoiseSVN → 프로젝트 폴더 우클릭 → "SVN Clean up"
- "Break locks", "Include externals" 등 체크박스 전부 체크 후 실행
3. .svn/wc.db 내부 잠금 수동 삭제 (SQLite 활용)
모든 방법을 다 써도 안 되는 경우엔
SVN 내부의 .svn/wc.db 파일을 직접 열어
잠금 정보를 SQLite로 삭제하는 방법이 있음
이 파일은 SVN 워킹 카피의 내부 상태를 저장하는 SQLite DB인데
잠금 정보가 LOCK 테이블에 남아 있으면 커밋이 막힐 수 있음
✅ 해결 방법:
1. .svn/wc.db 파일을 SQLite DB Browser 또는 SQLite CLI로 연다.
2. 현재 잠금 상태 확인
SELECT * FROM LOCK;
3. 모든 잠금 삭제
DELETE FROM LOCK;
4. 저장 후 종료 → 다시 커밋 시도
Clean up이 안 통하던 상황에서 이 방법으로 커밋 문제를 해결한 적이 있음
✅ 마무리 요약
SVN 커밋이 안 될 땐 당황하지 말고
1️⃣ 파일 잠금 상태
2️⃣ Clean up 여부
3️⃣ .svn 내부 상태
이 3가지를 순서대로 점검해보면 대부분 해결된다.
특히 .svn/wc.db에 남아 있는 LOCK 정보는
커밋이 조용히 먹통 되는 원인 중 가장 찝찝한 놈이다.
반응형