본문으로 바로가기

tortoise svn lock 해제 update 매크로

category 프로그래밍 2020. 1. 20. 21:35
반응형

프로그램 이력 관리는 아주 중요한데요, 프로그램의 버전을 업데이트하면서 발생하는 사이드 이펙트, 다운그레이드 등의 버그를 디버깅하는데 유용하기 때문입니다. svn을 사용하면서 lock이 걸려서 update/commit을 못하신 적이 있으신가요? 오늘은 tortoise svn lock에 대해서 알아보려고 하는데요, lock을 해제하는 방법부터 알아보도록 하겠습니다. lock을 푸는 방법은 간단합니다.




먼저 프로젝트 경로 우 클릭합니다.



Clean up을 클릭하면 lock이 풀리게 됩니다.



보통은 이렇게 한 번에 lock이 풀리지만 무한으로 반복을 해도 lock이 풀리지 않는 경우가 있습니다. 이럴 때는 보통 바이러스 백신 문제로 인해서 충돌이 나는 경우입니다. 이런 경우엔 바이러스 백신의 실시간 검사 기능을 끄고 Clean up을 한 뒤 다시 update를 시작하면 되겠습니다. 백신을 끄고도 안된다면 DB 파일을 건드려야 하는데 지금까지 여러 프로젝트를 했지만 그런 일까지는 생기지 않았습니다.


마지막으로 무한으로 lock이 걸리지 않고 여러 번 lock이 걸리는 경우가 있습니다. 저는 이럴 때 보통 Batch File을 이용한 매크로를 활용을 합니다. 방법에 대해서 알아보겠습니다.




 Batch File 만들기


lock이 걸린 파일들을 해제하는 것은 정말 귀찮습니다. lock을 풀고 update를 하기 위해서 clean up 후 update를 해야 합니다. 한 번만 하면 괜찮지만 여러 번을 해야 하는 경우 여간 귀찮은 일이 아닙니다. 그래서 Batch File을 이용해서 자동으로 clean up과 update를 자동으로 반복해주는 방법을 소개하려고 합니다.


Batch File은. bat이라는 확장자를 가진 파일을 말하는데요, DOS 명령어를 파일의 형태로 만든 것입니다.

"D:\Path"는 현재 사용하고 있는 SVN 파일의 경로를 넣어주면 됩니다.



@echo off


: 1


TortoiseProc.exe /command:cleanup /cleanup /noui /breaklocks /revert /fixtimestaps /vacuum /path:"D:\Path" /closeonend:0

TortoiseProc.exe /command:update /path:"D:\Path" /closeonend:0


timeout -t 1 /nobreak

goto 1

exit /b



명령어 모음 : 

https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html




위에처럼 @echo off 부터 exit /b까지 전체를 텍스트에 복사 붙여넣기를 합니다.



확장자를 bat으로 만든 후 저장을 하면 톱니바퀴 모양의 파일이 생성됩니다. 이제 파일을 클릭하면 해당 경로의 파일을 clean up 및 update를 자동으로 해줍니다. 이것의 단점은 update 확인 버튼을 클릭을 직접 해야 한다는 것인데, 저는 C#으로 마우스 매크로를 만들어서 사용을 하였습니다. C# 마우스 제어 방법은 아래 URL을 이용하시면 됩니다.



2019/08/25 - [프로그래밍/C#] - C# 마우스 제어(클릭, 좌표 이동)




 Batch File 분석


@echo off


: 1


TortoiseProc.exe /command:cleanup /cleanup /noui /breaklocks /revert /fixtimestaps /vacuum /path:"D:\Path" /closeonend:0

TortoiseProc.exe /command:update /path:"D:\Path" /closeonend:0


timeout -t 1 /nobreak

goto 1

exit /b


@echo off는 사실 해도 상관없고 안 해도 상관없습니다. @echo off를 하게 되면 명령어를 출력을 안 하게 됩니다.


: 1 goto 1은 반복문입니다. 1로 가라는 뜻입니다.


TortoiseProc.exe /command:cleanup clean up Command 입니다. 


/noui 결과에 대한 대화 상자를 안 나오게 합니다.


/breaklocks 모든 잠금을 해제합니다.


/revert commit 되지 않은 변경 사항을 되돌립니다.


/fixtimestaps /vacuum clean up시 선택할 수 있는 옵션입니다.


timeout -t 1 1초 시간 지연입니다.




2020/01/11 - [프로그래밍] - 비트맵의 구조, 24비트 비트맵의 구조는 어떻게 될까?

2020/01/05 - [프로그래밍/C] - 이중 연결 리스트(Double linked list), 이중 원형 연결 리스트 예제

2019/12/22 - [프로그래밍/C] - 프로그래머스 2016년, 날짜에 따른 요일 구하기

2019/11/05 - [프로그래밍] - 블루투스의 모든 것 - Bonding과 Pairing의 차이

2019/10/24 - [프로그래밍] - 블루투스의 모든 것 - Bluetooth COD(Class Of Device)란?

반응형