게임제작 이야기

Tortoise SVN Clean up 에러 해결방법 (무한 Clean up 오류)

원생계 2019. 3. 30. 20:08

회사에서도, 집에서도, 개인작업도
버젼관리가 필요한 부분에선 거의 항상
Tortoise SVN 을 사용합니다.
https://tortoisesvn.net/

잘 쓰고 있는데 가끔, 어떤 커맨드를 줘도
'Cleanup' 을 하라는 에러가 발생합니다.
Update나 Commit 등을 하려고 하면
Cleanup을 하라고 하고...
Cleanup을 하려고 하면,
다시 Cleanup을 하라고 하는...
(어쩌라는 건지)

통상적인 방법으론 lock 이 풀리지 않아서
저장소를 통째로 다시 Checkout 받으시는
경우가 꽤 많다고 들었습니다.

원인은 간단합니다.
메시지를 보면

Error:Working copy '블라블라' locked
~ already locked.

어떤 이유에서인지 lock 이 풀리지 않아서
Cleanup 도 동작하지 않는 문제입니다.
풀리지 않는 lock 을 강제로 지워주면 됩니다.

먼저 아래 파일을 다운받아 주세요.
직접 제작해서 압축한 파일이니
안심하고 다운받으셔도 좋습니다.

svn_delete_lock_by_wonsorang.zip
0.67MB

위 파일을 다운받아서 버젼관리 되고있는
(.svn 폴더가 있는) 폴더에 풀어줍니다.

이렇게

sqlite3.exe 와 svn_delete_lock~.bat
두 개 파일 중에 배치파일을 실행해줍니다.
"svn_delete_lock_by_wonsorang.bat"
마찬가지로, 직접 작성한 배치파일입니다.
동봉된 sqlite3.exe 도 sqlite 공식 홈페이지에서 받은 파일이니 안심하셔도 좋습니다.

이렇게 뜨면 끝
이제 다시 Cleanup 을 돌려서 lock 이
정상적으로 제거되었는지 확인합니다.

해결이 되었다면... 즐거운 작업 되시길!



PS1.
SVN은 데이터 내역을 sqlite 로 관리하는데
Working copy에서 뭔가 작업을 시작할 때
wc_lock 테이블에 lock 정보를 삽입하고
작업이 완료되면 다시 wc_lock 테이블의
lock을 제거하는 방식으로 동작합니다.

wc_lock 테이블에 lock 정보가 남아있다면
다른 작업이 진행되지 않도록 막습니다.
이 때, wc_lock 테이블에 lock 은 걸었는데
작업 도중 문제가 발생해서 lock 이 제거되지
으면 위와 같은 상황이 발생하게 됩니다.
구체적으로 어떤 문제 때문인지는 모르겠으나,
로컬환경에서는 목격한 적이 없는터라
네트워크 관련 문제가 아닐까 추측됩니다.

PS2.
SQLite browser 로 .svn/wc.db 를 열면
SVN 이 참조하는 DB 스키마를 볼 수 있습니다.
http://sqlitebrowser.org/

 

DB Browser for SQLite

DB Browser for SQLite The Official home of the DB Browser for SQLite Screenshot What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite. DB4S is for users and dev

sqlitebrowser.org


내용 추가.
Tortoise SVN 이 계속 버전업 되면서 편의기능이 많이 생겼습니다.

위 이미지에서 Break locks 를 체크하고 Cleanup 을 실행하면, 걸려있던 lock 이 많은 경우에 삭제되는 것 같습니다. 먼저 이 기능을 돌려보시고, 그래도 lock 이 제거되지 않는다면 위 본문의 툴을 사용하시면 될 것 같습니다.

728x90
반응형