티스토리 뷰



■ 패치 만들기

패치(Patch) 파일은 깃 저장소에 대한 쓰기 권한이 없을 때, 형상 관리 시스템을 사용하지 않는 곳에 최신의 소스 코드를 변경된 부분만 배포하고 싶을때 사용합니다.

From c708dd886aca9e9bdc72b5fd5234e8b40ef24fe4 Mon Sep 17 00:00:00 2001
From: Name 
Date: Thu, 10 Dec 2015 21:47:08 +0900
Subject: [PATCH 2/2] =?UTF-8?q?push=20=ED=85=8C=EC=8A=A4=ED=8A=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/README b/README
index df66ebb..a431db8 100644
--- a/README
+++ b/README
@@ -1 +1,2 @@
-test pull/fetch
\ No newline at end of file
+test pull/fetch
+push test
\ No newline at end of file
-- 
1.9.5.msysgit.1

위의 예제는 토터스깃에서 생성한 패치 파일로 리눅스의 diff에서 생성되는 "Unified-Diff" 형식과 다르지 않습니다. 변경된 부분만을 담는 표준 파일 형식입니다. 패치 파일을 생성하려면 우선 변경 사항을 로컬 저장소에 커밋해야 합니다. 커밋은 했지만 푸시(Push) 권한이 없는 관계로 원격 저장소에 직접 반영하지는 못하고 권한이 있는 사람에게 패치 파일을 보내서 반영을 부탁하는 형태입니다. 소스포지나 네이버 개발자 센터에서 운용하는 대부분의 오픈소스 프로젝트가 이러한 형태로 프로젝트를 운영합니다. 프로젝트 멤버들중 일부에게 권한을 부여하고 일반인을 비롯한 나머지 사람들이 프로젝트 게시판이나 권한 소유자 이메일로 패치 파일을 전달해서 수정사항을 반영하는 것입니다.

커밋을 수행했으면 탐색기에서 프로젝트 폴더의 컨텍스트 메뉴>TortoiseGit>패치만들기를 선택합니다. 위의 같은 창이 나오면 "저장할 폴더"에 패치 파일(*.patch)을 저장할 디렉토리를 입력하고 "버전"항목에서 "Range"를 선택하고 패치 대상 리비전을 시작~끝 범위로 지정합니다. 리비전 범위 선택은 우측의 [...] 버튼을 클릭합니다.

리비전 선택시 상단의 시작~끝 일자 범위를 조정하고 하단의 [새로고침] 버튼을 통해서 검색을 조정하고 해당 범위내 리비전간 이동은 우상단의 화살표 버튼을 사용하면 됩니다. 

리비전을 [확인] 버튼으로 선택하고 패치 만들기 창에서 [확인]을 누르면 지정한 폴더에 대상 리비전 만큼의 패치파일을 생성합니다. 리비전 단위별로 개별적 패치 파일이 생성되므로 여러 리비전 사이에 걸친 패치라면 해당 파일들을 모두 전달해야 합니다.

위의 그림은 패치만들기 결과로 생성된 파일입니다.


■ 패치 적용하기

누군가로부터 전달받은 패치파일을 현재의 코드 체계에 적용하기 위해서 일단 대상 파일들을 적절한 곳에 저장합니다. 패치 파일이 준비되었으면 탐색기에서 프로젝트 폴더의 컨텍스트 메뉴>TortoiseGit>패치 적용하기를 선택합니다. 

위와 같은 패치 적용하기 창에서 [추가] 버튼을 눌러 저장해 두었던 패치 파일을 선택합니다. 추가한 파일은 우측의 버튼을 통해서 위/아래로 이동하거나 삭제할 수 있고 항목 앞의 체크 박스 선택으로 패치 적용 여부를 선택할 수도 있습니다. 패치 적용전에 해당 패치를 검토할 필요가 있는데 패치를 선택하면 하단에 보이는 "Unified-Diff"만으로 판단이 어려울 수도 있습니다. 정밀한 검토가 필요하다면 패치 파일의 컨텍스트 메뉴>"Review Patch with TortoiseGitMerge"로 정확한 패치 검토를 할 수 있습니다.

위의 화면이 토터스깃 머지 도구를 통한 패치 검토 화면으로 보다 직관적으로 패치를 확인할 수 있습니다. 패치 검토가 끝나면 [확인]을 눌러 패치를 현재 저장소에 반영할 수 있습니다.

패치를 적용하면 위의 그림과 같이 체크 박스로 선택하지 않은 것은 건너뛰고 선택한 옵션에 따라 패치를 현재 저장소에 저적용합니다. 

패치 파일은 최근에는 코드리뷰 단계에서도 코드 전달 매체로도 활용되고 있으므로 자주 사용하지 않더라도 개념의 정확한 파악은 꼭 필요합니다. 


댓글
댓글쓰기 폼