SVN 을 이용한 버전관리 방법
여태까지는 형상관리 프로그램을 제대로 사용하지 못했었다. 꽤 오랬동안 소스 세이프를 써왔고 1년여전 부터 SVN 을 사용해 왔지만 사용 용도는 그저 소스를 보관하는 용도로만 사용해 왔었고 다른 필요성을 별로 느끼지못했었다. 그렇게 개념없이 사용하다 드디어 문제가 발생했다. ㅡㅡ 현재 관리 하고 있는 제품에 특정기능 까지의 버전을 뽑아서 배포해야 하는 일이 발생한것이다. 쩝... 버전관리도 안해서 어떻게 할 방법이 없당.
그래서 소 잃고 외양간 고치는 김에 한번 정리 하고 간다.
버전관리 방법은 SVN 에서 추천하는 방법으로 사용하기로 했당.
폴더 구성
-+<project name>
---+<branches>
---+<tags>
---+<trunk>
% 현재 피씨가 작업 피씨가 아니라 SVN 이 설치되어 있찌 않다. 고로 화면 캡쳐는 없다. ㅠㅠ
project name: 프로젝트의 이름으로 폴더를 만들고 그 밑에 3개의 폴더(branches, tags, trunk)를 가진다.
branches: 현재 버전과 나뉘어서 새로운 기능이나, 새로운 버전, 실험적인 버전을 만들 때 사용한다. 여기서 작업이 완료되면 tags 에 보관하고 tags 와 trunk 를 Merge 한다. Trunk 버전에서 나뉠 때, 나뉘는 기준이 개인적으로 실험적인 버전이면 자신의 아이디로 폴더를 만들고 관리하고, 기능적으로 나뉘면 기능명으로 폴더를 만들어 관리한다.
tags: trunk 폴더에서 작업중이던 소스를 버전이 나뉘는 시점(새로운 배포, 빌드 등등)에서 보관한다. 보관시 폴더명은 버전명으로 한다.
trunk: 현재 작업중인 소스와 관련된 자료를 보관한다.처음 소스를 올릴 때
현재 소스를 trunk 폴더에 모두 이동 시킨후 svn 에 올린다.
trunk 에서 작업이 완료되어 버전이 나뉠 때
% 일단 버전이 나뉘는 시점을 정의 해야 한다. 알기 쉽게 배포 버전이 나갈때 마다 버전이 나뉘는 것으로 정의 하고 사용한다.
1, 현재 trunk 에서 작업중인 내용을 update, commit 한다
2, trunk 폴더를 선택하고 오른쪽 마우스 클릭 baranch/tag 메뉴를 선택한다.
3, 그럼 팝업 메뉴가 나타난다. 버전이 나뉘는 것으므로 To URL 에 "./tag/1.1.1.0(버전정보)" 를 입력하고 OK 버튼 클릭한다.
4, 그러면 서버상에 "./Tag/1.1.1.0" 에 현재 trunk 와 같은 소스가 위치하게 된다.
5, 후에 tag 에 올린 소스에서 버그를 수정할 일이 발생하면 해당 버전을 업데이트 받으면된다.
% branch 해서 tab 폴더 밑에 trunk 폴더와 유사한 파일이 올란간다고 해서 똑같은 파일을 두개 관리하는것은 아니다. SVN 서버는 branch/Tag 할 경우 변경된 부분만을 관리 하여 저장한다.
trunk 에서 새로운 버전으로 나뉠 때
이와 같은 경우는 보통 현재 소스에 어떤 실험을 하기 위해서일수도 있고, 아니면 한국어 버전을 개발중에 따로 영문 버전을 동시에 개발해야 할수도 있고, 하여튼 간에 현재 소스와 개별된 버전으로 소스를 제어 하고 싶을 때 사용한다.
위의 내용과 동일하다 다른 점은 위치를 Tag 로 가는것이 아니라 branch 로 간다는 것 정도이다.
Tag 에서 수정할 때
보통 이런 경우는 trunk 에서는 계속 개발이 진행되고 있고 릴리즈된 버전의 오류를 수정하고 싶을 때가 대표적이 되겠다.
1, Tag 에서 작업 해야 하는 버전을 branch 로 "branch/Tag" 한다.
2, branch 폴더로 옮긴 소스의 오류를 수정한다.
3, 작업이 끝나면 update, commit 한다.
4, 다시 Tag 로 옮긴다. (이전 버전에 버그 수정 표시를 하고 새로 올린다.)
5, Tag 로 옮긴 소스를 오른찍 마우스로 클릭하여 Merge 메뉴를 선택한다.
6, trunk 와 Merge 한다.
'Manage' 카테고리의 다른 글
[CI TOOL] HUDSON 설치 (0) | 2011.11.18 |
---|---|
Microsoft Visual C++ 2010 Express 설치하기 (0) | 2010.11.12 |
TOW(Trac On Windows) 설치하기 (2) | 2009.03.09 |
SVN Notifier (SVN 알리미) (0) | 2009.03.09 |
지속적인 통합(Continuous Integration) 링크 (0) | 2009.03.06 |