작업 사본에 적용한 변경 사항을 보내는 것을 변경 사항 커밋이라고 합니다. 하지만 커밋하기 전에 작업 사본이 최신 상태인지 확인해야 합니다. → 를 직접 사용할 수 있습니다. 또는 먼저 → 을 사용하여 로컬 또는 서버에서 어떤 파일이 변경되었는지 확인할 수 있습니다.
작업 사본이 최신 상태이고 충돌이 없으면 변경 사항을 커밋할 준비가 된 것입니다. 커밋하려는 파일 및/또는 폴더를 선택한 다음 → 을 선택하십시오.
커밋 대화 상자에는 추가, 삭제 및 버전 관리되지 않은 파일을 포함하여 변경된 모든 파일이 표시됩니다. 변경된 파일을 커밋하지 않으려면 해당 파일의 선택을 해제하십시오. 버전 관리되지 않은 파일을 포함하려면 해당 파일을 선택하여 커밋에 추가하십시오.
모든 버전 관리 파일 또는 모든 수정된 파일과 같은 파일 유형을 빠르게 선택 또는 선택 해제하려면 표시된 항목 목록 바로 위에 있는 링크 항목을 클릭하십시오.
항목의 상태에 따른 색상 및 오버레이에 대한 정보는 “로컬 및 원격 상태” 섹션을 참조하십시오.
다른 저장소 경로로 전환된 항목은 (s) 표시기로도 나타납니다. 브랜치에서 작업하는 동안 무언가를 전환하고 trunk로 다시 전환하는 것을 잊었을 수 있습니다. 이것은 경고 신호입니다!
파일을 커밋할 때 커밋 대화 상자에는 선택한 파일만 표시됩니다. 폴더를 커밋할 때 커밋 대화 상자는 변경된 파일을 자동으로 선택합니다. 새로 생성한 파일을 잊어버린 경우, 폴더를 커밋하면 해당 파일을 찾을 수 있습니다. 폴더를 커밋한다고 해서 모든 파일이 변경된 것으로 표시되는 것은 아닙니다. 단지 더 많은 작업을 대신하여 사용자의 작업을 더 쉽게 만들어 줄 뿐입니다.
커밋 대화 상자에 버전 관리되지 않은 파일(예: 컴파일러 생성 또는 편집기 백업)이 너무 많이 표시된다고 생각되면 이를 처리하는 몇 가지 방법이 있습니다. 다음을 수행할 수 있습니다.
설정 페이지의 제외할 파일 목록에 파일(또는 와일드카드 확장자)을 추가합니다. 이 설정은 모든 작업 사본에 영향을 미칩니다.
→ 를 사용하여 파일을 svn:ignore 목록에 추가합니다. 이 설정은 svn:ignore 속성을 설정한 디렉토리에만 영향을 미칩니다. SVN 속성 대화 상자를 사용하여 디렉토리에 대한 svn:ignore 속성을 변경할 수 있습니다.
→ 를 사용하여 파일을 svn:global-ignores 목록에 추가합니다. 이 설정은 svn:global-ignores 속성을 설정한 디렉토리 및 모든 하위 폴더에도 영향을 미칩니다.
자세한 내용은 “파일 및 디렉토리 무시” 섹션을 참조하십시오.
커밋 대화 상자에서 수정된 파일을 두 번 클릭하면 외부 diff 도구가 실행되어 변경 사항을 보여줍니다. 스크린샷에 표시된 대로 컨텍스트 메뉴는 더 많은 옵션을 제공합니다. 여기에서 텍스트 편집기나 IDE와 같은 다른 응용 프로그램으로 파일을 끌어다 놓을 수도 있습니다.
항목 왼쪽에 있는 확인란을 클릭하여 항목을 선택하거나 선택 해제할 수 있습니다. 디렉토리의 경우 Shift-선택을 사용하여 작업을 재귀적으로 만들 수 있습니다.
하단 창에 표시되는 열은 사용자 정의할 수 있습니다. 아무 열 헤더에서 마우스 오른쪽 버튼을 클릭하면 표시할 열을 선택할 수 있는 컨텍스트 메뉴가 나타납니다. 마우스를 열 경계 위로 이동할 때 나타나는 드래그 핸들을 사용하여 열 너비를 변경할 수도 있습니다. 이러한 사용자 정의는 유지되므로 다음에도 동일한 헤더를 볼 수 있습니다.
기본적으로 변경 사항을 커밋할 때 파일에 대해 가지고 있는 모든 잠금은 커밋 성공 후 자동으로 해제됩니다. 잠금을 유지하려면 잠금 유지 확인란이 선택되어 있는지 확인하십시오. 이 확인란의 기본 상태는 Subversion 구성 파일의 no_unlock 옵션에서 가져옵니다. Subversion 구성 파일을 편집하는 방법에 대한 정보는 “일반 설정” 섹션을 참조하십시오.
일반적으로 커밋은 trunk 또는 브랜치에 수행되지만 태그에는 수행되지 않습니다. 결국 태그는 고정된 것으로 간주되며 변경되어서는 안 됩니다.
태그 URL에 커밋을 시도하면 TortoiseSVN은 먼저 의도된 작업인지 확인하기 위해 확인 대화 상자를 표시합니다. 대부분의 경우 이러한 커밋은 실수로 이루어지기 때문입니다.
그러나 이 검사는 저장소 레이아웃이 권장되는 레이아웃 중 하나인 경우에만 작동합니다. 즉, 세 가지 주요 영역을 표시하기 위해 trunk, branches 및 tags 이름을 사용합니다. 설정이 다른 경우 태그/브랜치/trunk를 감지하는 기능(분류 패턴으로도 알려짐)은 설정 대화 상자에서 구성할 수 있습니다: “리비전 그래프 설정” 섹션
작업 사본이 동일한 저장소에서 체크아웃된 경우 다른 곳에서 파일을 커밋 대화 상자로 끌어다 놓을 수 있습니다. 예를 들어, 계층 구조의 먼 폴더를 보기 위해 여러 탐색기 창을 열어 놓은 거대한 작업 사본을 가지고 있을 수 있습니다. 최상위 폴더에서 커밋하는 것(변경 사항을 확인하기 위한 긴 폴더 탐색 포함)을 피하고 싶다면, 한 폴더에 대한 커밋 대화 상자를 열고 다른 창의 항목을 끌어와 동일한 원자적 커밋에 포함시킬 수 있습니다.
작업 사본 내에 있는 버전 관리되지 않은 파일을 커밋 대화 상자로 끌어다 놓으면 자동으로 SVN 추가됩니다.
커밋 대화 상자 하단의 목록에서 로그 메시지 편집 상자로 파일을 끌어다 놓으면 해당 편집 상자에 경로가 일반 텍스트로 삽입됩니다. 이는 커밋에 영향을 받는 경로를 포함하는 커밋 로그 메시지를 작성하려는 경우에 유용합니다.
때로는 파일이 Subversion 외부에서 이름이 변경되어 파일 목록에 누락된 파일과 버전 관리되지 않은 파일로 나타납니다. 기록 손실을 방지하려면 Subversion에 연결을 알려야 합니다. 단순히 이전 이름(누락됨)과 새 이름(버전 관리되지 않음)을 모두 선택하고 → 를 사용하여 두 파일을 이름 변경으로 묶으십시오.
파일을 복사했지만 Subversion 명령을 사용하는 것을 잊은 경우, 새 파일이 기록을 잃지 않도록 해당 복사본을 복구할 수 있습니다. 단순히 이전 이름(일반 또는 수정됨)과 새 이름(버전 관리되지 않음)을 모두 선택하고 → 를 사용하여 두 파일을 복사본으로 묶으십시오.
커밋 대화 상자는 관련 파일을 함께 그룹화하는 데 도움이 되는 Subversion의 변경 목록 기능을 지원합니다. 이 기능에 대한 자세한 내용은 “변경 목록” 섹션에서 확인하십시오.
때로는 파일에 적용한 변경 사항 중 일부만 커밋하고 싶을 때가 있습니다. 이러한 상황은 보통 무언가를 작업하고 있는데 급한 수정 사항을 커밋해야 할 때 발생하며, 그 수정 사항이 작업 중인 파일에 있는 경우입니다.
파일에서 마우스 오른쪽 버튼을 클릭하고 → 을 사용하십시오. 이렇게 하면 파일의 현재 상태로 사본이 생성됩니다. 그런 다음 텍스트 편집기 등에서 파일을 편집하고 커밋하고 싶지 않은 모든 변경 사항을 되돌릴 수 있습니다. 변경 사항을 저장한 후 파일을 커밋할 수 있습니다.
TortoiseMerge를 사용하여 파일을 편집하는 경우, 익숙한 대로 변경 사항을 편집하거나 포함하려는 모든 변경 사항을 표시할 수 있습니다. 수정된 블록에서 마우스 오른쪽 버튼을 클릭하고 → 를 사용하여 해당 변경 사항을 포함합니다. 마지막으로 마우스 오른쪽 버튼을 클릭하고 → 를 사용하면 오른쪽 보기가 이전에 표시한 변경 사항만 포함하도록 변경되고 표시하지 않은 변경 사항은 되돌려집니다.
커밋이 완료되면 파일의 사본이 자동으로 복원되며, 커밋되지 않은 모든 수정 사항이 포함된 파일을 가지게 됩니다.
때로는 자주 변경되지만 실제로 커밋하고 싶지 않은 버전 관리 파일이 있을 수 있습니다. 이는 빌드 프로세스에 결함이 있음을 나타낼 수 있습니다. 왜 그 파일들이 버전 관리됩니까? 템플릿 파일을 사용해야 합니까? 하지만 가끔은 피할 수 없는 경우도 있습니다. 고전적인 이유는 IDE가 빌드할 때마다 프로젝트 파일의 타임스탬프를 변경한다는 것입니다. 프로젝트 파일은 모든 빌드 설정을 포함하므로 버전 관리되어야 하지만, 타임스탬프가 변경되었다고 해서 커밋될 필요는 없습니다.
이러한 번거로운 경우를 돕기 위해 ignore-on-commit이라는 변경 목록을 예약했습니다. 이 변경 목록에 추가된 파일은 커밋 대화 상자에서 자동으로 선택 해제됩니다. 여전히 변경 사항을 커밋할 수 있지만, 커밋 대화 상자에서 수동으로 선택해야 합니다.
커밋하는 변경 사항을 설명하는 로그 메시지를 입력하십시오. 이렇게 하면 나중에 프로젝트 로그 메시지를 찾아볼 때 어떤 일이 언제 발생했는지 확인하는 데 도움이 됩니다. 메시지는 원하는 만큼 길거나 짧을 수 있습니다. 많은 프로젝트에는 포함되어야 할 내용, 사용할 언어, 때로는 엄격한 형식에 대한 지침이 있습니다.
이메일에서 사용되는 것과 유사한 규칙을 사용하여 로그 메시지에 간단한 서식을 적용할 수 있습니다. 텍스트에 스타일을 적용하려면 굵게는 *텍스트*, 밑줄은 _텍스트_, 이탤릭체는 ^텍스트^를 사용하십시오.
TortoiseSVN에는 로그 메시지를 올바르게 작성하는 데 도움이 되는 맞춤법 검사기가 포함되어 있습니다. 이는 철자가 틀린 단어를 강조 표시합니다. 컨텍스트 메뉴를 사용하여 제안된 수정을 확인하십시오. 물론, 여러분이 아는 모든 기술 용어를 아는 것은 아니므로, 올바르게 철자된 단어가 때때로 오류로 표시될 수 있습니다. 하지만 걱정하지 마십시오. 컨텍스트 메뉴를 사용하여 개인 사전에 추가할 수 있습니다.
로그 메시지 창에는 파일 이름 및 함수 자동 완성 기능도 포함되어 있습니다. 이 기능은 정규 표현식을 사용하여 커밋하는 (텍스트) 파일에서 클래스 및 함수 이름을 추출하고 파일 이름 자체도 추출합니다. 입력하는 단어가 목록의 아무 것과 일치하면(최소 3자 이상을 입력하거나 Ctrl+Space를 누른 후), 전체 이름을 선택할 수 있는 드롭다운이 나타납니다. TortoiseSVN과 함께 제공되는 정규 표현식은 TortoiseSVN 설치 bin 폴더에 저장됩니다. 또한 자신만의 정규식을 정의하여 %APPDATA%\TortoiseSVN\autolist.txt에 저장할 수 있습니다. 물론 TortoiseSVN 설치를 업데이트할 때 개인 autolist는 덮어쓰여지지 않습니다. 정규 표현식에 익숙하지 않다면 https://en.wikipedia.org/wiki/Regular_expression 의 소개와 https://www.regular-expressions.info/ 의 온라인 문서 및 튜토리얼을 참조하십시오.
정규식을 정확히 맞추는 것은 까다로울 수 있으므로, 적절한 표현식을 찾는 데 도움이 되도록 표현식을 입력한 다음 파일 이름을 입력하여 테스트할 수 있는 테스트 대화 상자가 있습니다. 명령 프롬프트에서 TortoiseProc.exe /command:autotexttest 명령을 사용하여 시작하십시오.
로그 메시지 창에는 커밋 메시지 스니펫 기능도 포함되어 있습니다. 스니펫 바로 가기를 입력하면 이러한 스니펫이 자동 완성 드롭다운에 표시되며, 자동 완성 드롭다운에서 스니펫을 선택하면 스니펫의 전체 텍스트가 삽입됩니다. TortoiseSVN과 함께 제공되는 스니펫은 TortoiseSVN 설치 bin 폴더에 저장됩니다. 자신만의 스니펫을 정의하여 %APPDATA%\TortoiseSVN\snippet.txt에 저장할 수도 있습니다. #는 주석 문자입니다. 줄 바꿈은 \n 및 \r과 같이 이스케이프하여 삽입할 수 있습니다. 백슬래시를 삽입하려면 \\와 같이 이스케이프하십시오.
이전에 입력한 로그 메시지를 다시 사용할 수 있습니다. 를 클릭하기만 하면 이 작업 사본에 대해 마지막으로 입력한 몇 가지 메시지 목록을 볼 수 있습니다. 저장된 메시지 수는 TortoiseSVN 설정 대화 상자에서 사용자 정의할 수 있습니다.
TortoiseSVN 설정의 저장된 데이터 페이지에서 저장된 모든 커밋 메시지를 지우거나, 최근 메시지 대화 상자 내에서 Delete 키를 사용하여 개별 메시지를 지울 수 있습니다.
로그 메시지에 선택된 경로를 포함하려면 편집 컨트롤에서 → 명령을 사용할 수 있습니다.
경로를 로그 메시지에 삽입하는 또 다른 방법은 파일 목록에서 파일을 편집 컨트롤로 단순히 끌어다 놓는 것입니다.
커밋 로그 메시지의 서식과 맞춤법 검사기 모듈에서 사용되는 언어를 더 효과적으로 제어하는 데 사용할 수 있는 몇 가지 특수 폴더 속성이 있습니다. 자세한 내용은 “프로젝트 설정” 섹션을 참조하십시오.
버그 추적 시스템을 활성화했다면 버그 ID / 문제 번호: 텍스트 상자에 하나 이상의 문제를 설정할 수 있습니다. 여러 문제는 쉼표로 구분해야 합니다. 또는 정규식 기반 버그 추적 지원을 사용하는 경우, 로그 메시지의 일부로 문제 참조를 추가하기만 하면 됩니다. 자세한 내용은 “버그 추적 시스템/이슈 트래커와의 통합” 섹션에서 알아보십시오.
을 누르면 커밋 진행 상황을 표시하는 대화 상자가 나타납니다.
진행 상황 대화 상자는 다양한 커밋 작업을 강조하기 위해 색상 코딩을 사용합니다.
수정 사항 커밋 중.
새로운 추가 사항 커밋 중.
삭제 또는 교체 커밋 중.
다른 모든 항목.
이것은 기본 색상 구성표이지만, 설정 대화 상자를 사용하여 이러한 색상을 사용자 정의할 수 있습니다. 자세한 내용은 “TortoiseSVN 색상 설정” 섹션을 참조하십시오.