티스토리 뷰



이번 포스팅은 형상 관리하고 있는 저장소를 작업 사본을 통하는 방식이 아니라 특정 버전 상태를 내보내기 해서 전달하거나 프로젝트에 포함되지 않은 내용을 외부에서 프로젝트 내부로 들여오기 하거나, 변경 사항을 패치 파일로 만들어서 외부로 전달하거나 내부에 반영 시키는 방법을 다룹니다.


■ 들여오기(Import)와 내보내기(Export)


들여오기(Import)와 내보내기(Export)는 기존에 형상 관리 대상이 아니었거나 다른 프로젝트에 있던 파일들을 저장소로 들여오거나 현재의 작업 사본을 일반 파일로 내보내는 명령 입니다.



들여오기는 CLI로 "svn import -m 로그메시지 들여올경로 서브버전URL" 명령으로 수행하거나 저장소 생성때 처럼 일반 파일 폴더의 팝업 메뉴에서 TortoiseSVN>Import로 들여오기 할 수 있습니다. 들여오기는 외부의 일반 파일을 저장소에 직접 집어 넣는 작업이므로 반드시 작업 사본이 아닌 일반 폴더에서 작업을 수행해야 합니다. 작업 사본에서는 들여오기(Import) 메뉴가 보이지 않습니다. 우측 마우스로 클릭한 폴더를 위의 그림과 같은 Import URL로 들여오면서 메시지를 남깁니다. 커밋과 같은 효력을 가지므로 주의해서 작업합니다.


위의 예제는 D:\sorc\nmodbus라는 폴더를 "file:///D:/tmp/testsvn" URL로 지정한 저장소에 들여오기하는 것으로 URL 우측의 [...] 버튼을 클릭하면 아래의 그림과 같은 Repository Browser로 들여오기할 폴더를 구체적으로 지정할 수 있습니다.




내보내기는 들여오기와는 반대로 현재 작업 사본의 내용이나 저장소의 내용을 버전관리 시스템과는 무관한 일반 파일로 내보내는 기능으로 CLI로 "svn export 서브버전URL 내보내기경로"명령이나 버전 관리 대상 폴더의 팝업 메뉴>TortoiseSVN>Export로 내보낼 수 있습니다. 윈도우에서 작업 사본의 내용이 아니라 저장소의 내용을 내보내기 하고 싶다면 작업 사본이 아닌 일반 폴더에서 탐색기 컨텍스트 메뉴>TortoiseSVN>Export로 현재 버전이나 특정 리비전을 내보낼 수 있습니다.



내보내기가 저장소를 대상으로 할 수도 있지만 작업 사본을 대상으로 할 수도 있으므로 작업 사본 폴더에는 개발자가 나름 생성하고 아직 형상 관리에 포함시키지 않은 파일들이 있을 수도 있는데 그런 파일을 포함시킬지 여부를 "Export unversioned files too" 체크 박스를 통해서 선택할 수 있습니다.



■ 패치 파일(Patch file)


패치 파일은 오픈 소스 프로젝트에서 많이 사용하는 방법으로 아직 개발 스태프가 아닌 사람에게 저장소에 대한 쓰기 접근 권한을 부여할 수 없는 상황에서 사용할 수 있는 적절한 방법입니다. 관심있는 개발자가 프로젝트의 저장소 내용을 자신의 로컬 컴퓨터에 체크아웃 받은 다음 나름의 수정이나 보완 사항을 적용해서 테스트해본 다음에 수정 사항이 다른 사람들에게 유익하다고 판단이 선다면 패치 파일을 만들어서 이메일이나 이슈트래커, 게시판 등의 경로로 프로젝트 스태프에게 제공합니다. 프로젝트 스태프는 패치 내용을 검토하여 유용하다고 판단되면 저장소에 패치를 적용하는 방식입니다.


패치는 작업중인 상태를 따로 저장해 두었다가 다른 작업을 수행한 다음에 다시 진행하는 경우 처럼 현 작업 상태를 임시로 보관하는 경우에도 유용 합니다. 패치를 만들어 현재 상태를 임시로 보관해 놓고 Revert로 작업 내용을 취소하면 저장소와 똑같은 상태로 만들수 있습니다. 이 상태에서 다른 작업을 수행한 다음에 보관해둔 패치를 적용하면 원래 작업하던 상태로 작업을 계속 진행할 수 있는 것입니다.



패치를 만드는 방법은 작업을 수행한 작업 사본에서 작업 완료 처리인 커밋(Commit) 대신 CLI는 "svn diff 작업경로 > 패치파일명" 명령이나 윈도우 탐색기 컨텍스트 메뉴>TortoiseSVN>Create patch로 패치 파일을 생성할 수 있습니다.


패치 파일의 확장자는 *.patch나 *.diff로 보관 합니다.

 

패치 파일의 내용은 아래와 같은 형태인데


Index: test2.txt

===================================================================

--- test2.txt (revision 21)

+++ test2.txt (working copy)

@@ -6,4 +6,4 @@

 */

 

 text file test 222333

-4444

+44445555


파일 내용에서 리비전 정보를 찾을 수 있듯 패치를 작업 사본에 반영하는 작업은 패치의 리비전과 작업사본의 리비전이 같으면 큰 문제가 없으나 리비전이 서로 다르면 복잡한 상황이 있을 수 있습니다. 패치를 작업 사본에 적용하는 방법은 CLI로 "svn patch 패치 파일명" 명령이나 작업 폴더 팝업 메뉴>TortoiseSVN>Apply patch로 패치 파일을 적용할 수 있습니다. 




토터스SVN의 패치 적용은 위의 그림과 같이 토터스머지를 통해서 편리하게 수행할 수 있습니다.




댓글
댓글쓰기 폼