매뉴얼

부록 D. TortoiseSVN 자동화

목차

TortoiseSVN 명령어
Tsvncmd URL 핸들러
TortoiseIDiff 명령어
TortoiseUDiff 명령어

TortoiseSVN의 모든 명령은 명령줄 매개변수를 통해 제어되므로, 배치 스크립트로 자동화하거나 다른 프로그램(예: 즐겨찾는 텍스트 편집기)에서 특정 명령 및 대화 상자를 시작할 수 있습니다.

중요

TortoiseSVN은 GUI 클라이언트이며, 이 자동화 가이드는 사용자 입력을 수집하기 위해 TortoiseSVN 대화 상자를 표시하는 방법을 보여준다는 것을 기억하십시오. 입력이 필요 없는 스크립트를 작성하려면 공식 Subversion 명령줄 클라이언트를 대신 사용해야 합니다.

TortoiseSVN 명령어

TortoiseSVN GUI 프로그램은 TortoiseProc.exe라고 불립니다. 모든 명령은 /command:abcd 매개변수로 지정되며, 여기서 abcd는 필수 명령 이름입니다. 이 명령들 대부분은 최소한 하나의 경로 인수를 필요로 하며, 이는 /path:"some\path"로 주어집니다. 다음 표에서 '명령'은 /command:abcd 매개변수를, '경로'는 /path:"some\path" 매개변수를 나타냅니다.

/command:abcd 매개변수를 필요로 하지 않지만, 명령줄에 아무것도 지정되지 않으면 대신 프로젝트 모니터를 시작하는 특수 명령이 있습니다. /tray가 지정되면 프로젝트 모니터는 숨겨진 상태로 시작하여 시스템 트레이에 아이콘만 추가합니다.

일부 명령은 대상 경로 목록(예: 여러 특정 파일 커밋)을 취할 수 있으므로, /path 매개변수는 * 문자로 구분된 여러 경로를 취할 수 있습니다.

줄 바꿈으로 구분된 경로 목록을 포함하는 파일을 지정할 수도 있습니다. 이 파일은 BOM 없이 UTF-16 형식이어야 합니다. 이러한 파일을 전달하는 경우 /path 대신 /pathfile을 사용하십시오. 명령이 완료된 후 TortoiseProc이 해당 파일을 삭제하도록 하려면 /deletepathfile 매개변수를 전달할 수 있습니다. /deletepathfile을 전달하지 않으면 파일을 직접 삭제해야 하거나 파일이 남게 됩니다.

커밋, 업데이트 및 기타 여러 명령에 사용되는 진행 대화 상자는 일반적으로 명령이 완료된 후 사용자가 확인 버튼을 누를 때까지 열려 있습니다. 이는 설정 대화 상자에서 해당 옵션을 확인하여 변경할 수 있습니다. 그러나 이 설정을 사용하면 배치 파일에서 명령을 시작하든 TortoiseSVN 컨텍스트 메뉴에서 시작하든 관계없이 진행 대화 상자가 닫힙니다.

구성 파일의 다른 위치를 지정하려면 /configdir:"path\to\config\directory" 매개변수를 사용하십시오. 이는 모든 레지스트리 설정을 포함하여 기본 경로를 재정의합니다.

영구 설정을 사용하지 않고 명령 완료 시 진행 대화 상자를 자동으로 닫으려면 /closeonend 매개변수를 전달할 수 있습니다.

  • /closeonend:0 대화 상자를 자동으로 닫지 않음

  • /closeonend:1 오류가 없으면 자동 닫기

  • /closeonend:2 오류 및 충돌이 없으면 자동 닫기

  • /closeonend:3 오류, 충돌 및 병합이 없으면 자동 닫기

로컬 작업에서 오류나 충돌이 없었을 경우 진행 대화 상자를 닫으려면 /closeforlocal 매개변수를 전달하십시오.

아래 표에는 TortoiseProc.exe 명령줄을 사용하여 액세스할 수 있는 모든 명령이 나열되어 있습니다. 위에서 설명한 대로 이 명령들은 /command:abcd 형식으로 사용되어야 합니다. 표에서는 공간 절약을 위해 /command 접두사가 생략되었습니다.

표 D.1. 사용 가능한 명령 및 옵션 목록

명령설명
:about정보 대화 상자를 보여줍니다. 명령이 주어지지 않은 경우에도 표시됩니다.
:log

로그 대화 상자를 엽니다. /path는 로그가 표시될 파일 또는 폴더를 지정합니다. 추가 옵션을 설정할 수 있습니다.

  • /startrev:xxx,

  • /endrev:xxx,

  • /limit:xxx 가져온 메시지 양을 제한합니다.

  • /pegrev:xxx 특정 리비전에서 경로를 조회합니다.

  • /strict '복사 시 중지' 체크박스를 활성화합니다.

  • /merge '병합된 리비전 포함' 체크박스를 활성화합니다.

  • /datemin:"{datestring}" 필터의 시작 날짜를 설정하고,

  • /datemax:"{datestring}" 필터의 종료 날짜를 설정합니다. 날짜 형식은 svn 날짜 리비전에 사용된 것과 동일합니다.

  • /findstring:"filterstring" 필터 텍스트를 채우고,

  • /findtext 필터가 정규식이 아닌 텍스트를 사용하도록 강제하거나,

  • /findregex 필터가 단순 텍스트 검색이 아닌 정규식을 사용하도록 강제하고,

  • /findtype:X 여기서 X는 0에서 511 사이의 숫자입니다. 이 숫자는 다음 옵션의 합입니다.

    • /findtype:0 모든 것으로 필터링

    • /findtype:1 메시지로 필터링

    • /findtype:2 경로로 필터링

    • /findtype:4 작성자로 필터링

    • /findtype:8 리비전으로 필터링

    • /findtype:16 사용되지 않음

    • /findtype:32 버그 ID로 필터링

    • /findtype:64 사용되지 않음

    • /findtype:128 날짜로 필터링

    • /findtype:256 날짜 범위로 필터링

  • /outfile:path\to\file이 지정되면, 로그 대화 상자가 닫힐 때 선택된 리비전이 해당 파일에 기록됩니다. 리비전은 병합 대화 상자에서 리비전을 지정하는 데 사용되는 것과 동일한 형식으로 기록됩니다.

svn 날짜 리비전은 다음 형식 중 하나일 수 있습니다.

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkout

체크아웃 대화 상자를 엽니다. /path는 대상 디렉터리를 지정하고 /url은 체크아웃할 URL을 지정합니다. /blockpathadjustments 키를 지정하면 자동 체크아웃 경로 조정이 차단됩니다. /revision:XXX는 체크아웃할 리비전을 지정합니다.

/outfile:"path/to/file"을 지정하면, 체크아웃 후 지정된 파일에 세 줄의 내용이 포함됩니다. 첫 번째 줄은 체크아웃 경로, 두 번째 줄은 URL, 세 번째 줄은 리비전입니다.

:import가져오기 대화 상자를 엽니다. /path는 가져올 데이터가 있는 디렉터리를 지정합니다. 또한 /logmsg 스위치를 사용하여 미리 정의된 로그 메시지를 가져오기 대화 상자에 전달할 수 있습니다. 또는 명령줄에서 로그 메시지를 전달하고 싶지 않다면, path가 로그 메시지를 포함하는 파일을 가리키는 /logmsgfile:path를 사용하십시오.
:update/path에 있는 작업 사본을 HEAD로 업데이트합니다. /rev 옵션이 주어지면 업데이트할 리비전을 사용자에게 묻는 대화 상자가 표시됩니다. 이 대화 상자를 피하려면 /rev:1234와 같이 리비전 번호를 지정하십시오. 다른 옵션으로는 /nonrecursive, /ignoreexternals/includeexternals가 있습니다. /stickydepth는 지정된 깊이가 고정되어 스파스 체크아웃을 생성해야 함을 나타냅니다. /skipprechecks는 업데이트 전에 수행되는 모든 검사를 건너뛰도록 설정할 수 있습니다. 이 옵션이 지정되면 로그 표시 버튼이 비활성화되고, 업데이트 후 차이점 표시를 위한 컨텍스트 메뉴도 비활성화됩니다.
:commit커밋 대화 상자를 엽니다. /path는 대상 디렉터리 또는 커밋할 파일 목록을 지정합니다. 또한 /logmsg 스위치를 사용하여 미리 정의된 로그 메시지를 커밋 대화 상자에 전달할 수 있습니다. 또는 명령줄에서 로그 메시지를 전달하고 싶지 않다면, path가 로그 메시지를 포함하는 파일을 가리키는 /logmsgfile:path를 사용하십시오. 버그 ID 상자를 미리 채우려면(버그 추적기와 제대로 통합 설정된 경우), /bugid:"여기에 버그 ID"를 사용할 수 있습니다.
:add/path에 있는 파일을 버전 제어에 추가합니다.
:revert작업 사본의 로컬 수정을 되돌립니다. /path는 되돌릴 항목을 지정합니다.
:cleanup중단되거나 취소된 작업을 정리하고 /path에 있는 작업 사본의 잠금을 해제합니다. 실제로 정리 작업을 수행하려면 /cleanup을 전달해야 합니다. /noui를 사용하여 결과 대화 상자(정리 완료 또는 오류 메시지)가 나타나는 것을 방지하십시오. /noprogressui는 진행 대화 상자도 비활성화합니다. /nodlg는 사용자가 정리에서 정확히 무엇을 해야 할지 선택할 수 있는 정리 대화 상자 표시를 비활성화합니다. 사용 가능한 작업은 상태 정리를 위한 /cleanup, 모든 잠금을 해제하는 /breaklocks, 커밋되지 않은 변경 사항을 되돌리는 /revert, /delunversioned, /delignored, /refreshshell, /externals, /fixtimestamps/vacuum 옵션으로 지정할 수 있습니다.
:resolve/path에 지정된 충돌 파일을 해결된 것으로 표시합니다. /noquestion이 주어지면, 사용자에게 먼저 정말로 수행해야 하는지 묻지 않고 해결이 이루어집니다.
:repocreate/path에 리포지토리를 생성합니다.
:switch전환 대화 상자를 엽니다. /path는 대상 디렉터리를 지정하고 /url은 전환할 URL을 지정합니다.
:export/path에 있는 작업 사본을 다른 디렉터리로 내보냅니다. /path가 버전 관리되지 않은 디렉터리를 가리키면, 대화 상자가 /path의 디렉터리로 내보낼 URL을 요청합니다. /blockpathadjustments 키를 지정하면 자동 내보내기 경로 조정이 차단됩니다.
:dropexport/path에 있는 작업 사본을 /droptarget에 지정된 디렉터리로 내보냅니다. 이 내보내기는 내보내기 대화 상자를 사용하지 않고 직접 실행됩니다. /overwrite 옵션은 기존 파일을 사용자 확인 없이 덮어쓰도록 지정하고, /autorename 옵션은 파일이 이미 존재하는 경우 내보내진 파일이 덮어쓰기를 피하기 위해 자동으로 이름이 변경되도록 지정합니다. /extended 옵션은 로컬에서 변경된 파일만 내보내려면 localchanges를, 모든 버전 관리되지 않은 항목도 내보내려면 unversioned를 지정할 수 있습니다.
:dropvendor/path에 있는 폴더를 /droptarget에 지정된 디렉터리로 재귀적으로 복사합니다. 새 파일은 자동으로 추가되고, 대상 작업 사본에서 누락된 파일은 제거되어 원본과 대상이 정확히 동일하게 유지됩니다. 확인 대화 상자를 건너뛰려면 /noui를 지정하고, 진행 대화 상자 표시도 비활성화하려면 /noprogressui를 지정하십시오.
:merge병합 대화 상자를 엽니다. /path는 대상 디렉터리를 지정합니다. 리비전 범위 병합의 경우 /fromurl:URL, /revrange:string 옵션을 사용할 수 있습니다. 두 리포지토리 트리 병합의 경우 /fromurl:URL, /tourl:URL, /fromrev:xxx/torev:xxx 옵션을 사용할 수 있습니다.
:mergeall전체 병합 대화 상자를 엽니다. /path는 대상 디렉터리를 지정합니다.
:copy브랜치/태그 대화 상자를 띄웁니다. /path는 브랜치/태그를 생성할 작업 사본이며, /url은 대상 URL입니다. URL이 ^로 시작하면 리포지토리 루트에 대한 상대 경로로 간주됩니다. 작업 사본을 새 브랜치/태그로 전환 옵션을 미리 선택하려면 /switchaftercopy 스위치를 전달할 수 있습니다. 중간 폴더 생성 옵션을 선택하려면 /makeparents 스위치를 전달하십시오. 또한 /logmsg 스위치를 사용하여 미리 정의된 로그 메시지를 브랜치/태그 대화 상자에 전달할 수 있습니다. 또는 명령줄에서 로그 메시지를 전달하고 싶지 않다면, path가 로그 메시지를 포함하는 파일을 가리키는 /logmsgfile:path를 사용하십시오.
:settings설정 대화 상자를 엽니다.
:remove/path에 있는 파일(들)을 버전 제어에서 제거합니다.
:rename/path에 있는 파일의 이름을 변경합니다. 파일의 새 이름은 대화 상자로 물어봅니다. 유사한 파일들을 한 단계에서 이름 변경하는 것에 대한 질문을 피하려면 /noquestion을 전달하십시오.
:diffTortoiseSVN 설정에 지정된 외부 차이점(diff) 프로그램을 시작합니다. /path는 첫 번째 파일을 지정합니다. /path2 옵션이 설정되면 해당 두 파일로 차이점 프로그램이 시작됩니다. /path2가 생략되면 /path의 파일과 해당 BASE 간의 차이점이 수행됩니다. 지정된 파일에 속성 수정 사항도 있는 경우, 수정된 각 속성에 대해서도 외부 차이점 도구가 시작됩니다. 이를 방지하려면 /ignoreprops 옵션을 전달하십시오. 리비전 번호를 명시적으로 설정하려면 /startrev:xxx/endrev:xxx를 사용하고, 선택적 peg 리비전의 경우 /pegrev:xxx를 사용하십시오. /blame이 설정되고 /path2가 설정되지 않은 경우, 주어진 리비전으로 파일을 먼저 블레임(blame)하여 차이점을 수행합니다. /line:xxx 매개변수는 차이점이 표시될 때 이동할 줄을 지정합니다.
:shelve지정된 경로를 새 셸프에 보관합니다. /shelfname:name 옵션은 셸프의 이름을 지정합니다. 선택적으로 /logmsg:message로 로그 메시지를 지정할 수 있습니다. /checkpoint 옵션이 전달되면 파일의 수정 사항이 유지됩니다.
:unshelve/shelfname:name 이름의 셸프를 작업 사본 경로에 적용합니다. 기본적으로 셸프의 마지막 버전이 적용되지만, /version:X로 버전을 지정할 수 있습니다.
:showcompare

비교할 URL과 리비전에 따라, 이 명령은 통합 차이점(unified diff)(unified 옵션이 설정된 경우)을 표시하거나, 변경된 파일 목록이 있는 대화 상자를 표시하거나, URL이 파일을 가리키는 경우 해당 두 파일에 대한 차이점 뷰어를 시작합니다.

옵션 url1, url2, revision1revision2는 반드시 지정해야 합니다. 옵션 pegrev, ignoreancestry, blameunified는 선택 사항입니다.

지정된 URL에 속성 수정 사항도 있는 경우, 수정된 각 속성에 대해서도 외부 차이점 도구가 시작됩니다. 이를 방지하려면 /ignoreprops 옵션을 전달하십시오.

통합 차이점(unified diff)이 요청되면, 선택적으로 prettyprint 옵션을 지정할 수 있으며, 이는 병합 정보 속성을 더 사용자가 읽기 쉬운 형식으로 보여줍니다.

:conflicteditorTortoiseSVN 설정에 지정된 충돌 편집기를 /path에 있는 충돌 파일에 대한 올바른 파일로 시작합니다.
:relocate재배치 대화 상자를 엽니다. /path는 재배치할 작업 사본 경로를 지정합니다.
:help도움말 파일을 엽니다.
:repostatus수정 사항 확인 대화 상자를 엽니다. /path는 작업 사본 디렉터리를 지정합니다. /remote가 지정되면, 대화 상자는 사용자가 리포지토리 확인 버튼을 클릭한 것처럼 시작 시 즉시 리포지토리에 연결합니다.
:repobrowser

리포지토리 브라우저 대화 상자를 시작하며, /path에 주어진 작업 사본의 URL을 가리키거나 /path가 직접 URL을 가리킵니다.

/pegrev:xxx는 특정 리비전에서 경로를 조회하는 데 사용할 수 있습니다.

추가 옵션 /rev:xxx는 리포지토리 브라우저가 보여줄 리비전을 지정하는 데 사용될 수 있습니다. /rev:xxx가 생략되면 기본값은 HEAD입니다.

/path가 URL을 가리키는 경우, /projectpropertiespath:path/to/wc는 프로젝트 속성을 읽고 사용할 경로를 지정합니다.

/outfile:path\to\file이 지정되면, 리포지토리 브라우저가 닫힐 때 선택된 URL과 리비전이 해당 파일에 기록됩니다. 해당 텍스트 파일의 첫 번째 줄에는 URL이, 두 번째 줄에는 텍스트 형식의 리비전이 포함됩니다.

:ignore/path에 있는 모든 대상을 무시 목록에 추가합니다. 즉, 해당 파일에 svn:ignore 속성을 추가합니다.
:blame

/path에 지정된 파일에 대한 블레임(blame) 대화 상자를 엽니다.

/startrev/endrev 옵션이 설정되면 블레임 범위에 대한 질문 대화 상자가 표시되지 않고 해당 옵션의 리비전 값이 대신 사용됩니다.

/pegrev:xxx는 특정 리비전에서 경로를 조회하는 데 사용할 수 있습니다.

/line:nnn 옵션이 설정되면 TortoiseBlame은 지정된 줄 번호가 표시된 상태로 열립니다.

옵션 /ignoreeol, /ignorespaces/ignoreallspaces도 지원됩니다.

:cat/path에 주어진 URL 또는 작업 사본 경로에서 파일을 /savepath:path에 주어진 위치에 저장합니다. 리비전은 /revision:xxx에 주어집니다. 이는 특정 리비전의 파일을 가져오는 데 사용될 수 있습니다.
:createpatch/path에 주어진 경로에 대한 패치 파일을 생성합니다. 파일 저장 대화 상자를 건너뛰려면 /savepath:path를 전달하여 패치 파일을 직접 저장할 경로를 지정할 수 있습니다. 패치 파일을 보여주는 통합 차이점 뷰어가 시작되는 것을 방지하려면 /noview를 전달하십시오. 통합 차이점(unified diff)이 요청되면, 선택적으로 prettyprint 옵션을 지정할 수 있으며, 이는 병합 정보 속성을 더 사용자가 읽기 쉬운 형식으로 보여줍니다.
:revisiongraph

/path에 주어진 경로에 대한 리비전 그래프를 보여줍니다.

/pegrev:xxx는 특정 리비전에서 경로를 조회하는 데 사용할 수 있습니다.

특정 경로에 대한 리비전 그래프의 이미지 파일을 생성하되 그래프 창을 표시하지 않으려면, 출력 파일 경로와 함께 /output:path를 전달하십시오. 출력 파일은 리비전 그래프가 실제로 내보낼 수 있는 확장자를 가져야 합니다. 이들은 .svg, .wmf, .png, .jpg, .bmp.gif입니다.

리비전 그래프는 표시 방식에 영향을 미치는 많은 옵션을 가지고 있으므로, 출력 이미지 파일을 생성할 때 사용할 옵션을 설정할 수도 있습니다. 이 옵션들은 /options:XXXX로 전달하며, 여기서 XXXX는 10진수 값입니다. 필요한 옵션을 찾는 가장 좋은 방법은 일반적인 방식으로 리비전 그래프를 시작하고, 모든 사용자 인터페이스 옵션을 설정한 다음 그래프를 닫는 것입니다. 그러면 명령줄에 전달해야 할 옵션은 레지스트리 HKCU\Software\TortoiseSVN\RevisionGraphOptions에서 읽을 수 있습니다.

:lock/path에 지정된 디렉터리 내의 파일 또는 모든 파일을 잠급니다. 사용자가 잠금에 대한 주석을 입력할 수 있도록 '잠금' 대화 상자가 표시됩니다.
:unlock/path에 지정된 디렉터리 내의 파일 또는 모든 파일의 잠금을 해제합니다.
:rebuildiconcacheWindows 아이콘 캐시를 다시 빌드합니다. Windows 아이콘이 손상된 경우에만 사용하십시오. 이 작업의 부작용(피할 수 없는)은 바탕 화면의 아이콘이 재배열된다는 것입니다. 메시지 상자를 표시하지 않으려면 /noquestion을 전달하십시오.
:properties

/path에 주어진 경로에 대한 속성 대화 상자를 보여줍니다.

버전 관리된 속성을 다루기 위해 이 명령은 작업 사본을 필요로 합니다.

/path가 URL이고 /rev:XXX가 지정된 경우 리비전 속성을 보거나 변경할 수 있습니다.

특정 속성에 대한 속성 대화 상자를 직접 열려면, 속성 이름을 /property:name으로 전달하십시오.

:sync

현재 설정 또는 내보낸 설정 중 어떤 것이 더 최신인지에 따라 또는 지정된 대로 설정을 내보내거나 가져옵니다.

/path와 함께 경로가 전달되면, 해당 경로는 설정을 저장하거나 읽는 데 사용됩니다.

/askforpath 매개변수는 사용자에게 내보내기/가져오기 경로를 선택하도록 파일 열기/저장 대화 상자를 표시합니다.

/load 또는 /save 중 어느 것도 지정되지 않으면, TortoiseSVN은 어떤 설정이 더 최신인지 확인하여 설정을 내보낼지 가져올지 결정합니다. 내보내기 파일이 현재 설정보다 최신이면 파일에서 설정이 로드됩니다. 현재 설정이 더 최신이면 설정 파일로 설정이 내보내집니다.

/load가 지정되면, 설정은 설정 파일에서 가져옵니다.

/save가 지정되면, 현재 설정은 설정 파일로 내보내집니다.

/local 매개변수는 로컬 설정, 즉 로컬 경로를 참조하는 설정을 포함하도록 설정 내보내기를 강제합니다.


예시 (한 줄로 입력해야 합니다)

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0

TortoiseSVN 홈페이지

한국어 中文