4 번째 수정본
http://tortoisesvn.tigris.org/
MS 윈도우즈용 Subversion 클라이언트. 로컬에서 사용할 경우는 서버의 역할도 해 준다고 한다.
diff 출력
별도의 세팅을 하지 않은 상태에서는 매번 diff 를 실행하면 외장 diff 프로그램의 경로를 묻는다. 이 때 취소를 하면 기본적으로는 윈도우즈의 notepad.exe 가 실행되면서 unified diff 출력이 나온다. 이 방법은, 매번 취소를 한 번 해줘야 되는 것이 불편하고 (AnswerMe 경로 지정 창이 뜨지 않게 하는 방법을 아시는 분?) 소스 화일이 unix 화일 포맷일 경우는 줄바꿈이 제대로 되지 않는다.
setting 에 들어가서 Main->Diff viewer 를 따로 지정해 주면 unified diff 출력이 여기서 지정한 에디터에 나오게 된다. ViEditor 등을 사용하면 색상 지원이 되므로 편하다.
setting 에서 Main->External diff 지정하면 지정한 프로그램을 실행하여 diff 출력을 생성한다. "{{{지정한프로그램 기존화일 수정한화일}}}" 을 커맨드라인에서 실행하는 형식으로 보인다. 따라서 해당 프로그램이 커맨드라인 인자를 받을 수 있어야 한다. 그런데 이 경우, GNU diff 같은 프로그램을 사용하면 diff 출력이 도스창에 출력되고 출력이 끝나자마자 창이 사라져 버린다. 따라서 GUI를 제공하는 diff 프로그램을 찾아야 한다. (External diff 에 GNU diff 를, Diff viewer 에 gvim 을 지정해 보았으나 실패하였다. diff 와 viewer 를 호출하는 정확한 방법을 알아야 할 듯)
윈도우즈에서 ViEditor 를 사용한다면 gvim + GNU diff 조합을 추천. (사실은 해 본 게 이것밖에 없음)
* diff.exe 가 있는 경로를 PATH 환경변수에 추가한다.
* vimdiff.bat 배치화일을 만들어 그 내용을 {{{gvim -d %1 %2}}} 라 한다. (gvim.exe 의 전체 경로를 batch 화일에 적어주던가, gvim.exe 의 경로를 PATH 에 추가하던가 한다)
* TortoiseSVN 의 External diff 를 vimdiff.bat 를 선택해 준다. (여기서 바로 {{{gvim.exe -d}}} 라고 지정해 줄 수 있다면 굳이 위의 배치화일을 만들 필요가 없을 텐데, 실제 해 보면 제대로 되지 않는다)
위와 같이 하면, svn diff 를 하면 {{{gvim -d 기존화일 현재화일}}}이 실행되고, gvim 은 다시 내부적으로 {{{diff 기존화일 현재화일 > diff출력}}}을 실행하여 그 결과를 다음 그림과 같이 보여준다
위 그림을 보면 수정, 추가, 삭제된 부분이 서로 다른 색상으로 표시되고, 양쪽이 동일한 부분은 ViEditor 의 folding 기능 (vim 6.* 대 버전부터 지원) 을 사용하여 접혀 있는 것을 볼 수 있다. 기본 출력인 unified diff 보다는 훨씬 보기 좋다.
컴퓨터분류