기타/에러

SVN 커밋이 안 될 때 점검할 3가지

리신 2025. 4. 22. 00:00
반응형

 

 

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 정보는
커밋이 조용히 먹통 되는 원인 중 가장 찝찝한 놈이다.

 

 

반응형