게임 개발자를 위한 SVN (5)

SVN을 효율적으로 사용하기 위한 몇 가지 조언들

SVN은 어디까지나 작업을 진행 할 때 필요한 보조 도구 Tool 이다. SVN 등의 버전 관리 프로그램이 개발의 마법 지팡이는 아니며, 때문에 올바른 사용 습관을 들이는 것이 중요하다. 다음의 사항들을 지킨다면 SVN을 사용하는 중 발생 할 수 있는 갖가지 골치 아픈 문제를 미연에 방지 할 수 있을 것이다.

자주 커밋 할 것

중간 중간 결과물이 나올 때 마다 커밋을 하게 될 경우, 일단 작업 중 파일을 날리거나, 중간 지점으로 복구를 해야 할 상황이 발생 할 때 큰 도움이 된다. 커밋을 하는 기간이 짧을 수록 복구를 할 수 있는 복구 지점이 하나 더 늘어나는 것이다.

자주 업데이트 할 것

혼자 작업을 하는 것이라면 상관 없겠지만, 기본적으로 팀 작업을 하고 있을 때에는 자주 업데이트를 해야 한다. 무엇보다 남들이 작업한 결과물을 지속적으로 확인을 하고 그에 대하여 커뮤니케이션 하는 것은 팀 작업의 기본이다.

항상 로그 메시지를 입력 할 것

로그 메시지를 입력하지 않는다면, 그 자료를 받는 다른 작업자들은 당신이 커밋한 내용이 대체 무엇인지 파악하기 위해 메시지를 입력 했을 때 보다 더 많은 시간을 할애해야 한다. 또한 로그 메시지를 입력하지 않으면, 해당 리비전의 변경 사유 등의 기록이 그 자리에서 사라지게 된다. 로그 메시지를 누락하여 무의미한 커밋을 하는 것은 팀 커뮤니케이션을 방해하는 요소가 된다.

업데이트 된 파일 및 로그를 확인 할 것

항상 업데이트를 한 다음에는 다른 사람들의 커밋 내역을 확인하도록 한다. 효율적인 프로젝트를 위하여 남의 작업을 항상 확인하고 자신의 작업을 점검하라.

올리기 전 올려야 되는 파일을 정확하게 확인 할 것

SVN에서 관리 할 필요가 없는 파일들(예를 들어 Thumbs.db 같은 류)을 SVN으로 관리하기 시작하면 SVN의 성능을 저하시키는 역할을 한다. 구태여 필요하지 않은 파일을 올리는 것은 아닌지 확인을 하고 커밋하는 습관을 들이도록 한다.

작업 프로세스를 항상 개선 할 것

SVN과 버전 관리 시스템이 램프의 지니는 아니다. 시스템을 도입했다고 해서 개발 중 발생하는 리소스 문제가 봄날 눈 녹듯 다 녹아내리는 것은 절대 아니다. SVN을 운영 하면서 많은 팀들이 많은 시행착오를 겪었고, 이를 해결하기 위해서 작업 프로세스에 문제가 발생하면 항상 프로세스를 개선하여 문제를 해결하고자 노력을 기울인다. 팀을 효율적인 프로세스를 갖춘 유능한 팀으로 만들고 싶은가? 그럼 작업 프로세스에 문제가 없는지 항상 살피고 문제점을 해결하기 위해서 노력해야 한다.

참고 문헌

사실 SVN 및 Tortoise SVN의 기능은 다양하다. 앞서 밝혔듯 본 문서에서는 그 중 가장 기본이 된다고 여겨지는 기능들에 대해서만 간략하게 정리 하였다. 본격적으로 버전 관리 시스템을 구축하거나, 혹은 관리자 기능에 대해 알고 싶은 사람, 또는 다른 세부적인 기능들에 대해서 궁금한 사람들은 아래의 자료들을 참고하기 바란다.

  • 윈도우 프로젝트 필수 유틸리티: Subversion, Trac, Cruise Control.NET(이재홍, 2008): 윈도우 프로젝트 진행 시 필요한 각 프로그램에 대한 설치, 운영에 대한 책
  • 실용주의 프로그래머를 위한 버전관리 using CVS(데이비드 토머스 외, 2004): SVN이 아닌 CVS에 대한 책이지만, 버전 관리의 기본 개념을 충실히 설명했다.
  • Version Control With Subversion for Subversion 1.6(Collins Sussman 외, 2010): SVN 1.6 공식 메뉴얼(영문)

홈페이지

문서 저작권

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 이용허락조건을 보려면, http://creativecommons.org/licenses/by-nc-sa/2.0/kr/을 클릭하거나, 크리에이티브 커먼즈 코리아에 문의하세요.

게임 개발자를 위한 SVN (4)

Tortoise SVN으로 파일/폴더 관리하기

기본적으로 SVN은 각 파일 및 폴더의 변경 사항에 대한 기록을 해당 폴더 내의 .svn 이란 별도 폴더를 생성하여 관리한다(이 폴더는 숨김 상태로 숨겨져 있기 때문에 숨김 파일 표시 옵션을 추가하지 않는 한 보이지 않는다).

각 파일 및 폴더에 대한 추가, 삭제, 이름 변경 등의 내역을 SVN에서도 확인이 되어야 해당 작업물이 정상적으로 저장소에 전송이 될 수 있기 때문에 파일/폴더 관리 작업은 Tortoise SVN으로 관리를 하는 것이 안전하다-윈도우에서 파일 관리 하듯이, 파일을 휴지통 혹은, Delete 키를 이용하여 지우거나, Ctrl-C/V 등을 이용하여 복사하는 방법을 이용 할 수 있지만, 이러한 방법들은 저장소와 작업 복사본에 존재하는 데이터를 엉키게 만들어 작업물을 날릴 수도 있으니 주의하기 바란다.

파일/폴더 추가 Add

기존 저장소에 저장되지 않은 새로운 파일이나 폴더를 만든 경우 추가 명령을 이용하여 해당 파일 및 폴더를 SVN이 관리 할 수 있도록 해야 한다. 추가 명령으로 파일/폴더를 등록하지 않으면 SVN이 해당 파일/폴더를 인식하지 못하고 저장소로 전송하지 않는다.

  • 추가를 시킬 파일이나 폴더를 선택하여 마우스 우클릭으로 메뉴를 불러온 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Add… 를 선택한다. 폴더를 선택할 경우 해당 폴더 내 추가 가능한 파일 리스트 팝업이 나타난다.
  • 추가 작업이 종료되면 해당 파일/폴더의 아이콘에 + 기호가 추가 된다.
    • 추가 작업을 한 파일을 다시 되돌리고 싶다면, 서브 메뉴의 Undo Add… 를 이용한다.
  • 해당 파일/폴더를 커밋하면 추가가 완료된다(반드시 커밋을 해야 해당 파일/폴더가 저장소로 전송된다).

파일/폴더 삭제 Delete

기존 저장소에 저장되어 있던 파일/폴더를 삭제해야 할 경우 삭제 명령을 이용한다.

  • 삭제를 시킬 파일/폴더를 선택하여 마우스 우클릭으로 메뉴를 호출 한 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Delete를 선택한다.
  • 삭제 작업이 완료 되면 해당 파일이 삭제 된다.
    • 삭제 작업을 한 파일을 다시 되돌리고 싶다면, 서브 메뉴의 Revert를 이용한다.
  • 해당 파일/폴더를 커밋하면 삭제가 완료된다.

파일/폴더 이름 바꾸기 Rename

기존 저장소에 있는 파일/폴더의 이름을 변경하고 싶을 경우 이름 바꾸기 명령을 이용한다.

  • 이름을 바꿀 파일/폴더를 선택하여 마우스 우클릭으로 메뉴를 호출 한 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Rename을 선택한다.
  • 바꿀 이름을 확장자까지 입력한 후 OK를 누른다.
  • 해당 파일/폴더를 커밋하면 이름 변경이 완료 된다.

Tortoise SVN 사용 시 요긴하게 쓰이는 기능들

다음에 설명 될 기능들은 SVN을 이용하면서 자주 이용하게 되는 기능은 아니지만, 이용 중 발생하는 문제의 원인을 확인하거나 조치하기 위해 사용되는 기능들이다. 여기에서는 몇가지 주요 기능들에 대해서 설명하도록 한다.

로그 보기 Show Log

변경 사항에 대한 기록을 확인하기 위해서 사용한다. 저장소에 저장된 작업물의 로그를 리비전 단위로 확인 할 수 있으며, 각 리비전 별로 커밋 시 입력한 메시지, 변경된 파일 목록을 확인 할 수 있다.

  • 작업 복사물이 있는 폴더에서 마우스 우클릭으로 메뉴를 호출한 후,Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Show Log를 선택한다.
    • From / to: 검색하고자 하는 로그의 기간을 입력 할 수 있다.
    • Messages, authors and paths 입력 폼: 검색하고자 하는 키워드를 이곳에 입력하여 검색한다.
    • Revision List: 리비전 별로 분류되어 있는 검색 결과 항목이 리스트로 표시 된다. 해당 항목을 클릭하면, 하단에 메시지와 변경 내역이 출력 된다.

저장소 브라우저 Repo-browser

저장소 브라우저는 현재 저장소에 저장된 작업물의 구조를 확인 할 수 있게 해준다. 저장소 브라우저를 통해 저장소에 저장되어 있는 폴더의 구조, 파일의 위치 등을 확인 할 수 있다.

  • 작업 복사물이 있는 폴더에서 마우스 우클릭으로 메뉴를 호출한 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Repo-browser를 선택한다
    • URL: 현재 보고 있는 저장소의 주소이다. 주소를 직접 변경하여 다른 저장소를 확인 할 수 있다.
    • Revision: 각 리비전에 따른 저장소 구조를 확인 할 수 있다. Head는 최신 리비전을 나타내며, 특정한 리비전 번호를 입력하면 해당 리비전의 폴더 및 파일 구조를 확인 할 수 있다.

위치 재지정 Relocate

작업 복사물에서 신나게 작업하고 있는 동안 갑자기 저장소가 들어있는 서버의 IP가 바뀐다던가, 도메인 이름이 바뀌거나 하는 경우 해당 작업 복사물에서 가지고 있는 저장소의 위치를 변경해야 할 경우가 발생한다. 이럴 경우 위치 재지정 명령을 이용한다.

  • 작업 복사물이 있는 폴더에서 마우스 우클릭으로 메뉴를 호출한 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 중 Relocate를 선택한다.
    • 입력 폼에 변경된 URL을 입력한 후 OK 버튼을 누르면 위치 재지정이 완료된다.

변경사항 비교 Diff

Tortoise SVN을 이용하여 이전 버전과 현재 버전의 변경 사항을 비교 할 수 있다. 변경사항 비교는 파일 형식에 따라서 비교가 불가능 할 수 있으며(바이러니 파일은 불가능 하다), 기본적으로 Text 파일 형식, 그래픽 파일 포맷(JPG, GIF, PNG 등), MS 오피스 제품군의 저장 파일들(DOC, XLS 등)의 경우 해당 기능을 이용 할 수 있다.

  • 변경사항을 비교하고자 하는 파일을 선택하고 마우스 우클릭으로 메뉴를 호출한 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • Diff with previous version 을 선택하면 해당 파일의 바로 이전 버전과 현재 작업 복사물에 있는 버전을 동시에 열어준다-별도의 비교용 프로그램을 이용하여 두 파일을 동시에 열게 된다.
    • 참고: 리비전 로그 혹은, 커밋 등의 진행 팝업에서 파일 명을 더블 클릭 하면 해당 파일의 변경 사항을 바로 확인 할 수 있다.

게임 개발자를 위한 SVN (3)

Tortoise SVN

Tortoise SVN은 윈도우플랫폼 기반 SVN 클라이언트 프로그램이다. 윈도우 환경에서 설치하여 GUI Graphic User Interface 환경에서 이용할 수 있기 때문에 SVN의 복잡한 명령줄 Command line 체계를 이용하지 않고도 손쉽게 사용이 가능하다.

다운로드 및 설치

Tortoise SVN은 공식 홈페이지(http://tortoisesvn.tigris.net/) 에서 다운로드 받을 수 있다. 자신의 윈도우의 운영체계 종류(32Bit / 64Bit)에 맞는 버전을 선택하여 설치 파일을 다운로드 받는다.

Tortoise SVN 공식 홈페이지

해당 홈페이지에서는 각 언어별 언어팩을 제공하고 있으며, 한글 역시 지원하고 있다-영어로 된 메뉴에 울렁증이 생긴다면 한국어 지원 팩을 다운로드를 받는다. 설치 파일 및 언어 팩의 인스톨 파일을 실행시켜 설치를 하면 Tortoise SVN이 실행 된다.

Tortoise SVN 사용에 꼭 필요한 기능들

SVN에 대한 기본 개념 및 Tortoise SVN에 대한 설명은 여기까지 하도록 하고, 본격적으로 Tortoise SVN을 업무에 활용하기 위한 기능 설명을 하도록 한다.

체크 아웃 Check Out

체크 아웃은 저장소에서 자신의 컴퓨터로 작업 복사본을 가져오는 명령이다. 해당 명령을 수행하게 될 경우, 사용자 인증을 거친 다음, 저장소로 부터 파일들을 지정된 폴더로 복사 해 오게 된다.

  • 작업 복사본을 저장 할 폴더로 이동한 후, 해당 폴더 윈도우에서 마우스 우클릭 한다. 메뉴 중 SVN Check Out을 선택한다.
  • SVN Check Out을 선택했을 경우 아래와 같은 팝 업 윈도우가 나타난다.
    • URL of repository: 접속 할 저장소의 주소를 입력한다. 저장소의 주소는 SVN 관리자에게 확인한다.
    • Checkout directory: 자신이 작업 복사본을 저장 할 폴더의 위치를 입력한다(보통은 자동으로 입력되므로, 해당 위치가 맞는지 정도만 확인 하면 된다).
    • Checkout Depth: 어느 위치까지 체크아웃 할 것인지를 결정하는 옵션이다. 디폴트인 Fully recursive를 선택한다.
    • Revision: 복사할 작업 복사본의 리비전을 선택한다. HEAD revision을 선택 할 경우 가장 최신의 리비전을 받게 되며, 원하는 리비전의 번호를 입력하면 해당 리비전을 받을 수 있다.
  • 모든 사항을 확인 한 후, OK 버튼을 누르면 다음과 같은 사용자 인증 팝 업이 나타난다.
    • Username: 자신이 발급 받은 사용자 이름을 입력한다
    • Password: 지정한 패스워드를 입력한다.
    • Save authentication: 이 항목에 체크 하게 될 경우 해당 컴퓨터에 인증 기록이 남아 다음 작업 부터는 인증 과정이 자동으로 이루어진다-저장 내역을 삭제하기 위해서는 Tortoise SVN의 환경 설정 옵션을 이용한다.
  • 인증 절차를 마치면 체크 아웃 내역이 아래와 같이 실시간으로 표시 된다.
  • 체크 아웃이 완료 되면 OK 버튼을 눌러 해당 팝 업을 닫는다.

커밋 Commit

작업 복사본에서 자신이 해야 할 업무를 마무리 하였을 경우, 해당 작업물을 커밋하여 저장소로 내용을 전송해야 한다.

  • 작업 복사본에서 폴더나 수정한 파일을 선택하여 마우스 우클릭을 하여 나타나는 메뉴에서 SVN Commit 을 선택한다.
  • SVN Commit 선택 시 다음과 같은 팝 업 윈도우가 나타난다.
    • Message: 커밋에 들어가는 로그를 기록한다. 로그에는 이번 커밋에서의 변동사항, 팀원들이 확인해야 될 내용, 검색 태그 등을 간략하게 정리하여 입력하도록 한다.
    • Changes made: 커밋에 적용되는 파일의 목록과 적용 상태를 확인 할 수 있다. 아래의 체크 박스 옵션들을 통하여 리스팅을 조정하거나, 전체 선택/선택 취소를 할 수 있다.
  • 로그 메시지 및 커밋 할 파일을 선택 한 후 OK 버튼을 누르면 아래와 같이 커밋 내역이 실시간으로 표시 된다.
  • 커밋이 완료 되면 OK 버튼을 클릭하여 팝 업을 닫는다.

업데이트 Update

자신이 작업을 진행하고 있는 작업 복사본을 저장소에 있는 최신 작업물로 교체하기 위해서 업데이트 명령을 이용한다. 이 명령을 이용하여 자신이 작업하고 있는 동안 다른 사람들에 의해 갱신 된 작업물들을 최신 파일로 내려 받아 변경 할 수 있다.

  • 작업 복사본에서 업데이트를 실시할 폴더나 파일을 선택하여 마우스 우클릭으로 메뉴를 호출한다. 메뉴 중 SVN Update를 선택한다.
  • 팝 업과 함께 업데이트 내역이 실시간으로 보여진다.
  • 업데이트가 완료 되면 팝 업 하단에 Show log… 버튼과 OK 버튼이 활성화 된다.
    • Show log… 버튼을 클릭하면, 로그 팝 업이 열린다. 로그 팝 업 에서 각 리비전 별 로그 메시지를 확인 할 수 있다.
    • OK 버튼을 클릭하면 팝 업 이 닫힌다.

되돌리기 Revert

작업을 하다보면, 자신의 현재 작업물을 버리고 이전 작업물로 되돌려야 할 경우가 종종 발생한다. 되돌리기 명령을 이용하면 최신 리비전으로 파일을 복구 시킬 수 있다.

  • 작업 복사본에서 수정 한 파일 중 되돌리기를 수행해야 할 폴더나 파일을 선택하여 마우스 우클릭으로 메뉴를 불러낸 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 항목 중 Revert 를 선택하면, 아래와 같은 팝 업이 출현한다.
  • 되돌리기를 실행 할 파일을 선택 한 후 OK 버튼을 클릭 하면 해당 파일을 저장소의 가장 최신 리비전으로 되돌린다.

잠금 및 잠금 해제 Lock/Unlock

잠금 중심 버전 관리 방식을 채택하는 것이 아니라 하더라도, 자신이 작업하고 있는 작업물을 다른 팀원이 함부로 수정하지 못하게 막아야 할 필요가 발생 경우가 있다. 이때는 해당 파일이나 폴더 전체를 잠금 상태로 만들고 난 다음, 작업이 완료 된 이후 해당 파일의 잠금을 해제하면 된다.

  • 잠금을 위한 파일 혹은 폴더를 선택하고 마우스 우클릭으로 메뉴를 불러낸 후, Tortoise SVN을 선택하여 서브 메뉴를 불러온다.
  • 서브 메뉴 항목 중 Get Lock을 선택하면 아래와 같은 팝 업이 출현한다.
    • 해당 파일에 잠금을 거는 이유를 Enter a message describing why you ar locking the file(s). 항목에 서술한다.
    • 파일 리스트를 확인 한 후 OK 버튼을 클릭하면 해당 파일을 잠금 상태로 만든다.
  • 저장소에 해당 파일의 잠금 상태가 전송 되면서 잠금 처리가 완료 된다.
  • 잠금 상태를 다시 잠금 해제 상태로 변환하기 위해서는 마우스 우클릭으로 메뉴를 불러낸 후, Tortoise SVN의 서브메뉴를 불러온다.
  • 서브 메뉴 항목 중 Release Lock을 선택하면 아래와 같은 팝 업이 나타난다.
    • Unlock을 할 파일 목록을 확인 한 후 OK 버튼을 클릭하면 해당 파일을 잠금 해제 상태로 만든다.