매뉴얼

패치 생성 및 적용

오픈 소스 프로젝트(본 프로젝트 포함)의 경우, 누구나 저장소에 대한 읽기 권한을 가지며 프로젝트에 기여할 수 있습니다. 그렇다면 이러한 기여는 어떻게 통제될까요? 누구나 변경 사항을 커밋할 수 있다면, 프로젝트는 영구적으로 불안정해지고 아마도 영구적으로 손상될 것입니다. 이러한 상황에서는 쓰기 권한을 가진 개발팀에 패치 파일을 제출하여 변경 사항을 관리합니다. 개발팀은 패치를 먼저 검토한 다음, 저장소에 제출하거나 작성자에게 반려할 수 있습니다.

패치 파일은 단순히 작업 사본과 기준 리비전 간의 차이점을 보여주는 통합-Diff 파일입니다.

패치 파일 생성

먼저 변경 사항을 만들고 테스트해야 합니다. 그 다음 부모 폴더에서 TortoiseSVN커밋...을 사용하는 대신, TortoiseSVN패치 생성...을 선택합니다.

그림 4.63. 패치 생성 대화 상자

The Create Patch dialog

이제 전체 커밋을 할 때와 마찬가지로 패치에 포함할 파일을 선택할 수 있습니다. 이렇게 하면 저장소에서 마지막으로 업데이트한 이후 선택한 파일에 대한 모든 변경 사항 요약이 포함된 단일 파일이 생성됩니다.

이 대화 상자의 열은 수정 사항 확인 대화 상자의 열과 동일한 방식으로 사용자 지정할 수 있습니다. 자세한 내용은 “로컬 및 원격 상태” 섹션을 참조하십시오.

옵션 버튼을 클릭하여 패치가 생성되는 방식을 지정할 수 있습니다. 예를 들어, 줄 끝이나 공백 변경 사항이 최종 패치 파일에 포함되지 않도록 지정할 수 있습니다.

다른 파일 집합에 대한 변경 사항을 포함하는 별도의 패치를 생성할 수 있습니다. 물론 패치 파일을 생성한 다음, 동일한 파일에 대해 추가 변경 사항을 만들고 다른 패치를 생성하면, 두 번째 패치 파일에는 변경 사항 집합이 모두 포함됩니다.

원하는 파일 이름으로 파일을 저장하기만 하면 됩니다. 패치 파일은 원하는 어떤 확장자도 가질 수 있지만, 관례적으로는 .patch 또는 .diff 확장자를 사용해야 합니다. 이제 패치 파일을 제출할 준비가 되었습니다.

다른 사람에게 이메일로 보낼 생각이라면 패치 파일을 .txt 확장자로 저장하지 마십시오. 일반 텍스트 파일은 이메일 소프트웨어에 의해 손상되는 경우가 많으며, 공백과 줄바꿈 문자가 자동으로 변환되고 압축되는 경우가 자주 발생합니다. 그런 일이 발생하면 패치가 원활하게 적용되지 않습니다. 따라서 패치 파일을 저장할 때 확장자로 .patch 또는 .diff를 사용하십시오.

파일 대신 클립보드에 패치를 저장할 수도 있습니다. 다른 사람들이 검토할 수 있도록 이메일에 붙여넣기 위해 이 작업을 수행할 수 있습니다. 또는 한 컴퓨터에 두 개의 작업 사본이 있고 한 작업 사본에서 다른 작업 사본으로 변경 사항을 전송하려는 경우, 클립보드의 패치가 이를 수행하는 편리한 방법입니다.

원한다면 커밋 또는 수정 사항 확인 대화 상자 내에서 패치 파일을 생성할 수 있습니다. 파일을 선택하고 상황에 맞는 메뉴 항목을 사용하여 해당 파일에서 패치를 생성하기만 하면 됩니다. 옵션 대화 상자를 보려면 마우스 오른쪽 버튼을 클릭할 때 Shift 키를 누르고 있어야 합니다.

패치 파일 적용

패치 파일은 작업 사본에 적용됩니다. 패치를 생성할 때 사용된 것과 동일한 폴더 수준에서 이 작업을 수행해야 합니다. 무엇인지 확실하지 않다면 패치 파일의 첫 번째 줄을 확인하십시오. 예를 들어, 작업 중인 첫 번째 파일이 doc/source/english/chapter1.xml이고 패치 파일의 첫 번째 줄이 Index: english/chapter1.xml이라면, doc/source/ 폴더에 패치를 적용해야 합니다. 하지만 올바른 작업 사본에 있다면, 잘못된 폴더 수준을 선택하더라도 TortoiseSVN이 이를 감지하고 올바른 수준을 제안할 것입니다.

작업 사본에 패치 파일을 적용하려면, 저장소에 대한 최소한의 읽기 권한이 있어야 합니다. 그 이유는 병합 프로그램이 원격 개발자가 변경 사항을 만든 리비전을 참조해야 하기 때문입니다.

해당 폴더의 상황에 맞는 메뉴에서 TortoiseSVN패치 적용...을 클릭합니다. 그러면 적용할 패치 파일을 선택할 수 있는 파일 열기 대화 상자가 나타납니다. 기본적으로 .patch 또는 .diff 파일만 표시되지만, 모든 파일을 선택할 수 있습니다. 이전에 클립보드에 패치를 저장했다면, 파일 열기 대화 상자에서 클립보드에서 열기...를 사용할 수 있습니다. 이 옵션은 TortoiseSVN패치 생성...을 사용하여 패치를 클립보드에 저장한 경우에만 나타납니다. 다른 앱에서 클립보드로 패치를 복사해도 버튼이 나타나지 않습니다.

또는 패치 파일이 .patch 또는 .diff 확장자를 가지고 있다면, 해당 파일을 직접 마우스 오른쪽 버튼으로 클릭하고 TortoiseSVN패치 적용...을 선택할 수 있습니다. 이 경우 작업 사본 위치를 입력하라는 메시지가 표시됩니다.

이 두 가지 방법은 동일한 작업을 수행하는 다른 방식을 제공합니다. 첫 번째 방법에서는 작업 사본(WC)을 선택하고 패치 파일을 찾습니다. 두 번째 방법에서는 패치 파일을 선택하고 작업 사본(WC)을 찾습니다.

패치 파일과 작업 사본 위치를 선택하면, TortoiseMerge가 실행되어 패치 파일의 변경 사항을 작업 사본과 병합합니다. 작은 창에 변경된 파일 목록이 표시됩니다. 각 파일을 차례로 두 번 클릭하여 변경 사항을 검토하고 병합된 파일을 저장하십시오.

원격 개발자의 패치가 이제 작업 사본에 적용되었습니다. 따라서 다른 모든 사람이 저장소에서 변경 사항에 접근할 수 있도록 커밋해야 합니다.

TortoiseSVN 홈페이지

한국어 中文