SVN이란??
trunk
트렁크에는 하나의 최신본만 있게 됩니다.
tags
태그에는 개발이 중간쯤 완료되어 배포 정도 할 수 있는 버전이 올라갑니다.
brunches
브런치에는 개발 중인 버전이 올라갑니다.
원래 개발자들의 소스관리를 편리하게 위하기위한 툴입니다.
하지만 만들다보니 굳이 소스가 아니더라도 문서파일관리(버전관리)를 할때에
유용하겠다라고 생각이 되기 때문에 이러한 문서를 작성하게 되었습니다.
일단.. 라이센스는 아파치 라이센스에 따릅니다.(무료)
SVN은 파일을 저장할때 실제파일을 저장하지 않습니다..(응???)
처음 파일을 저장시킬때는 파일 원본 그대로 저장을 시키고 그다음부터는 실제파일을 저장하는 형식이 아닌
그파일과의 차이점을 저장시킵니다.. 즉.. 10kb 파일을 저장시키고 그 파일을 3kb제거 시켰으면
실제 저장소에는 10kb 저장된것과 3kb를 삭제한 기록들이 남습니다.
이러한 특성 때문에 언제든지 타임머신과 같이 뒤로 돌아갈수가 있습니다.
즉.. 문서를 작성했는데 필요없을꺼 같아서 제거 했는데 다시 필요할 상황이 발생했을때.. SVN서버가 사망하지 않는이상 언제든지 뒤로 되돌릴수 있습니다.
그렇다면 이제 SVN의 기본적인 원리와 구조에대해서 설명을 하겠습니다.
아래 그림을 보시면
여기서 주황색, 초록색, 파란색이 있습니다. 이것은 각각 폴더의 특성을 나타내기 위해서 표현한 것인데..
폴더는 크게 3가지로 나누어 질수 있습니다.
Trunk : 강의 본류(나무로치자면 줄기)
Branches : 강의 지류(나무로자면 가지)
Tags : 배포판 또는 중간백업판
위의 3개의 폴더로 볼 수 있는데 굳이 이와같이 안해도 상관없는데 주로 이렇게 쓰는것을 권장합니다..
즉.. Trunk 폴더는 중간작업이 완료된파일이 있는것이고
Branches는 현재 작업중인 파일들이 존재하는것들
Tags 는 중간중간 백업 중간완성본 또는 최종완성본이 존재하는 폴더로 보시면 됩니다.
이때 중간중간 진척도에 따라서 버전넘버를 매기면 상당히 편리하실것입니다.
0.1 // 0.3 // 0.5 최종완성본은 1.0
즉.. 백분률로 퍼센티지를 나누어 구분하셔서 저장을 하시면 현재 작업의 진척도라던지
어느정도 완성이 되었다는것을 감으로 한눈에 보실수 있을 것입니다.
그리고 1.0문서에서 좀더 심화 된다면 1.1 // 1.5 이러한 형식으로도 진행을 하실수 있기 때문에
출판관련작업이나 논문 등을 작성을 하실때에 매우 유용할 것이라고 판단됩니다..
물론 위의 3개의 폴더를 쓰지 않더라도 구성하실수 있습니다.
하지만 좀더 체계적인 파일관리와 안정적인 작업을 원하신다면 귀찮더라도 위와 같이 관리하시는 것을 권장드립니다.
이제 여기서 각각 1~16까지의 숫자가 달려 있는것을 보시고 이게 뭐지라고 하시는 분들이 있을것입니다..
이것은 용어와 같이 설명드리겠습니다.
Import(임포트/추가): 파일이나 폴더를 리파지토리(저장소)에 최초로 추가하는 작업을 뜻합니다.
즉.. 새로운파일이나 폴더를 추가할때에 쓰는 용어라 보시면됩니다.
하지만 임포트를 했어도 커밋을 하지 않으면 적용이 되지 않습니다.
Commit(커밋) : 파일을 리파지토리(저장소: 즉.. 웹하드)에 업로드하는 작업을 뜻합니다..
커밋을 할때마다 리비전(Revision) 넘버가 올라갑니다..
즉.. 위 그림은 총 16번 커밋이 발생되었기 때문에 리비전 넘버가 16입니다..
좀 더 자세히 설명하자면 웹하드에 저장(커밋)을 할때마다 자동적으로 백업이 된다는 이야기입니다..
방금전 SVN이 타임머신과 같은 기능을 한다고 했는데.. 바로 이러한 특성 때문입니다..
즉.. 원한다면 언제든지 해당 리비전으로 되돌아 갈수 있습니다.
Commit Log(커밋로그) : 커밋을 할때마다 로그를 작성할수 있습니다. 여기서 로그란
현재까지 작업의 진행상태(어디어디까지 작성했다.)를 글로 적는 행위를 말합니다.
추후 복구를 하실때에 복구지점의 기준이 되기때문에 반드시 커밋하시기전 작성할것을 권장드립니다.
Checkout(체크아웃) : 리파지토리(웹하드)로부터 데이터를 다운받을때에 하는 행위를 체크아웃이라고 부릅니다.
Revert(리버트/되돌리기) : 최근 리비전으로 파일을 복구시킵니다.
즉. 기존의 내용을 아예 날려버리고 웹하드에 가장 최근 리비전넘버로 되돌리는 기능을 뜻합니다.
그밖에 다른 용어들 Switch, Update, Merge 등 여러 용어들이 있는데 그것은 추후에 다시 설명드리겠습니다.
서브버전(Sebversion : SVN)은 자유 소프트웨어 버전 관리 시스템입니다. 소프트웨어의 버전을 관리하고, 팀이 같이 코드를 관리할 수 있게 해주는 등의 기능을 가진 시스템입니다. 명령행 인터페이스에서 사용하는 명령어를 따서 SVN이라고 줄여서 부르기도 합니다. 제한이 있던 CVS를 대체하기 위해서 만들어졌습니다.
CVS와의 비교 1. 원자적으로 쓰기를 지원하므로, 다른 사용자의 쓰기와 엉키지 않는다. 2. 이름을 바꾸거나, 복사하거나, 파일을 지워도 리비전 기록을 유지한다. 3. 이진 파일도 효율적으로 저장할 수 있다. 4. 디렉토리 버전 관리를 할 수 있다. 디렉토리 전체를 빠르게 옮기거나 복사할 수 있으며, 리비전 기록도 유지한다. 5. 소스 저장고의 크기에 상관없이 일정한 시간안에 가지치기(branching)나 태그 넣기(tagging)을 할 수 있다. 6. 소스 저장고로의 접근이 최적화 되어있으므로, 소스 저장고에서 필요없는 네트워크 트래픽을 줄일 수 있다.
branch, tag, trunk
What do “branch”, “tag” and “trunk” really mean?
Trunk would be the main body of development, originating from the the start of the project until the present.
Branch will be a copy of code derived from a certain point in the trunk that is used for applying major changes to the code while preserving the integrity of the code in the trunk. If the major changes work according to plan, they are usually merged back into the trunk.
Tag will be a point in time on the trunk or a branch that you wish to preserve. The two main reasons for preservation would be that either this is a major release of the software, whether alpha, beta, RC or RTM, or this is the most stable point of the software before major revisions on the trunk were applied.
Trunk
- 단어 자체의 뜻은 본체, 본문 등입니다. - 프로젝트에서 가장 중심이 되는 디렉토리입니다. - 모든 프로그램의 개발 작업은 trunk 디렉토리에서 이루어 집니다. - trunk 디렉토리 바로 아래에는 소스들의 파일과 디렉토리가 들어가게됩니다.
Branch
- trunk에서 뻗어져 나온 나무가지를 뜻합니다. - 프로그램을 개발하다 보면 trunk 디렉토리에서 또 다른 작은 분류로 빼서 따로 개발해야 할 경우가 있습니다.프로젝트안의 작은 프로젝트라고 생각하면 됩니다.- branches 디렉토리 안에 또 다른 디렉토리를 두어 그 안에서 개발하게 됩니다.
Tag
- tag는 꼬리표입니다. - 이 디렉토리는 프로그램을 개발하면서 정기적으로 릴리즈 할 때, 0.1 / 0.2 / 1.0 등 이런식의 버전 별로 소스 코드를따로 저장하는 공간입니다.- 버전별로 태그를 붙여서 tag 디렉토리 안에 보관한다고 생각하면 됩니다.
1. 다운로드
(1) 완성된 버전 다운로드
http://code.google.com/p/xe-hika/downloads/ Viewer
- 완성된 버전은 zip 압축파일로 해서 다운로드 페이지에 올립니다.
(2) SVN 사용
http://xe-hika.googlecode.com/svn/ Viewer
- 현재 개발중인 최신 코드를 다운받을 수 있습니다. - trunk는 현재 XE 자료실에 배포된 버전, branches는 현재 개발하고 있는 버전입니다. - 자세한 사용법은 검색을 통해 확인하세요.
2. 이슈등록
http://code.google.com/p/xe-hika/issues/list Viewer
- 질문란에 올리는 것보다 이슈란에 올리시면 제가 오류 등을 관리하기가 쉬워집니다.
3. 변경된 사항 보기
http://code.google.com/p/xe-hika/source/checkout Viewer
(1) 활용법
- 제가 구글 프로젝트를 사용하려는 가장 큰 이유입니다. 커스텀 사용자는 버전이 업글될 때 마다 고민입니다. 업글하고 다시 수정했던 것을 새 버전에 집어 넣어야 하는데 어느 부분이 바꼈는지 알기가 쉽지 않기 때문에 업글이 두렵고 어렵습니다. - 구글 프로젝트 사이트에서는 이러한 코드 변화를 알 수 있습니다.
(2) 대략의 사용법
- 위의 주소에서 상단의 메뉴 중 'broswer' 는 해당 파일 별로 확인할 수 있고, 'changes'는 변경된 부분을 확인할 수 있습니다. - 해당 파일(브라우저에서 선택) 혹은 변경된 버전을(예. r63 같은 링크 버튼) 보면 우측 등에 'Diff' 라는 링크가 있습니다. 이를 눌러 확인하시면 변경된 부분이 색상 등으로 쉽게 구분되어 표시되어 있습니다. 이를 통해 쉽게 확인할 수 있습니다.
4. 위키(매뉴얼)
- 발로 만든 매뉴얼이 해당 링크에 있습니다.