이번 포스팅은 대부분의 서브버전 사용자는 거의 사용할 기회가 없거나 구경조차 할일이 없을 가능성도 있는 기능인 병합(Merge)과 잠금(Locking) 기능입니다. 대부분의 사용자는 체크아웃, 업데이트, 커밋이면 대부분의 필요가 해소됩니다. 하지만 때로는 복잡한 상황과 현상을 단순화 시켜 줄 수 있는 기능이기도 합니다. ■ 병합(Merge) 앞선 포스팅("서브버전(Subversion) 브랜치와 태그" 참조)에서 태그는 특정 시점의 리비전에 표시를 해둔 것으로 태그에 대한 수정 작업을 하지 않는다고 언급했는데, 브랜치는 메인 trunk 및 다른 브랜치와는 별개로 독자적인 개발 프로세스를 진행 합니다. 브랜치에 대한 개발 프로세스가 안정화되고 완료되면 다시 메인 trunk나 다른 브랜치와 합치는 작업이 필요..
살아 있는 프로젝트는 끊임없이 진화 및 발전해 나갑니다. 가장 원천적인 속성과 특성, 모양은 유지해 나가면서도 때로는 본류는 아니지만 곁가지를 쳐서 별도의 모습으로 발전하기도 합니다. 예를들어 상용 프로그램의 대표격이라 할 수 있는 윈도우 시스템의 경우에도 윈도우 XP, 윈도우 7, 윈도우 10등의 발전적 과정이 있지만 각 윈도우 시스템 별로 별도의 업데이트를 운영합니다. 어떤 경우에는 제품을 릴리즈한 시점의 코드가 정확히 보관되어야 할 필요성이 있는데 이러한 중요 시점별로 태그를 붙여 놓으면 추후 피드백에 용이하게 사용할 수 있습니다. ■ 브랜치와 태그(Branches/Tags) 앞선 포스팅에서 서브버전 저장소를 생성할 때 trunk/branches/tags라는 폴더를 기본 폴더로 자동 생성하도록 했는..
중앙집중식의 서브버전(Subversion)의 저장소(Repository)는 통상 위의 그림처럼 branches, tags, trunk라는 기본 폴더를 만들어 사용합니다. 주요 작업은 trunk에서 진행하기 때문에 프로젝트에 참여하는 사람들은 trunk를 체크아웃 받아 개발을 진행합니다. 그렇지만, 새로운 버전을 개발하거나 실험적 프로젝트를 진행할 경우에는 주요 작업 영역인 trunk는 손대지 않고 새로운 브랜치를 따서(Branching) 독립적으로 작업을 하다가 개발이 끝난 경우 trunk에 합치는 작업(Merge)을 수행하는 방식을 사용합니다. 또한, 특정 릴리즈를 보관할 경우에는 해당 시점의 코드에 태그를 붙여(Tagging) 저장해 놓았다가 해당 리비전이 필요할 경우에는 저장한 태그로 코드를 불러내..