티스토리 뷰
살아 있는 프로젝트는 끊임없이 진화 및 발전해 나갑니다. 가장 원천적인 속성과 특성, 모양은 유지해 나가면서도 때로는 본류는 아니지만 곁가지를 쳐서 별도의 모습으로 발전하기도 합니다. 예를들어 상용 프로그램의 대표격이라 할 수 있는 윈도우 시스템의 경우에도 윈도우 XP, 윈도우 7, 윈도우 10등의 발전적 과정이 있지만 각 윈도우 시스템 별로 별도의 업데이트를 운영합니다. 어떤 경우에는 제품을 릴리즈한 시점의 코드가 정확히 보관되어야 할 필요성이 있는데 이러한 중요 시점별로 태그를 붙여 놓으면 추후 피드백에 용이하게 사용할 수 있습니다.
■ 브랜치와 태그(Branches/Tags)
앞선 포스팅에서 서브버전 저장소를 생성할 때 trunk/branches/tags라는 폴더를 기본 폴더로 자동 생성하도록 했는데, 통상 작업은 trunk에서 수행하고 핵심 코드는 메인인 trunk에 유지하면서 발전시켜 나갑니다. 그런데 핵심 제품을 유지 발전 시키면서도 기존 기능에 크게 영향을 미치는 메이저 릴리즈 등의 경우에는 메인 저장소와 혼합하여 개발을 진행시키기에는 무리가 있습니다. 이런 경우 메인 코드와 분리하여 별도의 가지로 프로젝트를 진행할 수 있도록 하는 것이 브랜치 입니다. 메인과는 분리된 브랜치는 나름의 개발 과정을 밟다가 안정화 단계에 들어서면 메인 Truck에 다시 머지(Merge)하는 방식으로 운용하는 것입니다.
태그는 특정한 리비전에 표시를 해두는 것으로, 예를 들면 특정 릴리즈에 표시를 해두고 해당 버전에 대한 개발이나 수정이 다시 필요한 시점에 태그를 활용하는 것입니다. 버전별로 기능이 다르고 여러 버전으로 고객 서비스를 제공하는 곳에서 많이 활용할 수 있는 방법 입니다. 태그는 특정 시점의 고정된 모습으로 태그에 대한 직접적인 수정은 지양하고 태그에 대한 수정이 필요하면 태그를 기반으로 브랜치를 만든다음 브랜드에서 수정이 완료되면 해당 브랜치를 기반으로 새롭게 태그를 생성하는 방식으로 운용 합니다.
서브버전에서 브랜치와 태그는 내용을 그대로 복사하는 방식이 아니라 링크를 거는 방식이기 때문에 저장 공간을 많이 차지 하거나 생성에 오랜 시간을 소모하지 않으므로 적극적으로 활용하는 것이 좋습니다.
브랜치나 태그 생성은 CLI로 "svn copy -m 로그메시지 대상 브랜치및태그URL"명령이나 탐색기 팝업 메뉴>TortoiseSVN>Branch/Tag...를 통해서 수행할 수 있습니다.
브랜치나 태그를 만들 때 대상 원본은 3가지로 할 수 있는데 최신 리비전(HEAD revision in the repository)과 특정 리비전(Specific revision in repository)의 경우에는 로컬에 있는 작업 사본과는 무관하게 저장소에 있는 내용으로 브랜치나 태그를 만드는 것으로 "svn copy ..."명령에서도 대상에 저장소 URL를 기술하면 됩니다. 작업사본을 브랜치와 태그의 대상으로 할 경우에는 해당 저장소의 내용과 로컬에서 수정한 내용이 반영되는 것입니다. 중요한 입력 사항은 브랜치 및 태그 URL로 최초 저장소를 생성했던 /branches나 /tags 에 버전 또는 프로젝트 코드명을 붙여 생성 합니다.
브랜치나 태그에서 작업할 때는 메인 /trunk 대신 /branches나 /tags URL로 체크아웃해서 작업하면 됩니다. 그런데 체크아웃 받은 작업 사본의 기준 URL을 바꾸고자 할 때, 예를 들면 특정 브랜치에서 작업하던 내용을 가지고 메인에서 작업하고 싶을 때는 CLI로 "svn switch 대상URL 작업경로" 명령이나 작업경로 루트의 팝업 메뉴>TortoiseSVN>Switch...으로 URL을 전환시킬 수 있습니다.
서브버전 Switch 전후로 기준 저장소 URL이 무엇인지 확인하는 방법은 CLI "svn info" 또는 "svn info 작업경로" 명령이나 탐색기 팝업 메뉴>속성>Subversion 탭으로 확인할 수 있습니다.
브랜치와 태그를 적용하며 프로젝트가 발전해온 과정을 TortoiseSVN에서는 그래픽으로 한눈에 볼 수도 있는데 위의 그림은 국내 오픈소스 DBMS인 큐브리드의 리비전 그래프의 일부로 리비전 그래프는 각 프로젝트에서 탐색기 팝업메뉴>TortoiseSVN>Revision graph로 확인해 볼 수 있습니다.
'IT 일반' 카테고리의 다른 글
오픈소스 리포팅 도구 살펴보기 (0) | 2019.03.25 |
---|---|
서브버전(Subversion) 병합(Merge)과 잠금(Locking) (0) | 2019.03.08 |
서브버전(Subversion) 내보내기, 들여오기, 패치 파일 사용법 (0) | 2019.03.08 |
서브버전(Subversion) 작업 사본 받기와 업데이트 및 커밋 (0) | 2019.03.08 |
서브버전(Subversion) 설치와 기본 개념 및 저장소 생성하기 (0) | 2019.03.08 |