'2010/05/04'에 해당되는 글 1

  1. 2010/05/04 Mercurial 에서의 branching (6)
엔드유저에게 프로그램을 릴리즈 하고 난 뒤에 개발은 계속 하면서 릴리즈 버전의 패치도 병행해야 한다. 그리고 수정된 패치들은 개발 버전에도 주기적으로 적용이 되어야 한다.

Mercurial 에서 이것을 하는 방법은 3가지가 있다. git 나 bazaar 같은 다른 DVCS 도 크게 다르지 않을거라 본다.

1. 저장소를 Clone 을 떠놓고 개발버전과 릴리즈 버전 두개의 저장소를 운영한다. Mercurial 은 저장소간 changeset 의 교환이 쉽기 때문에 이 방법은 자연스럽게 사용 가능하다.

2. Mercurial 내에 내장된 브랜치 기능을 사용한다. SVN 의 브랜치 기능과 비슷하다고 보면 될것 같은데 SVN 브랜치를 제대로 써본 적이 없어서 뭐라 말하긴 힘들다.

3.한 저장소 내에서 브랜칭 없이 Head 를 여러개 유지한다.

첫번째 방법은 가장 DVCS 다운 '머지가 간편하고 관리 가능한 풀백업' 이라고 보면 되겠다.

두번째 방법은.. 제대로 쓰기 쉽지 않아 보인다.

이번에 사용해 보려는 것은 세번째 방법이다. 첫번째 방법에서 저장소만 하나를 쓰는것.

아래 스샷은 Devel 고 Release 라는 두개의 Head 를 유지하면서 필요하다고 생각될 때마다 한쪽의 수정사항을 다른쪽에 반영시켜 나가는 것을 보여준다.

사용자 삽입 이미지


간략히 요약해 보자면, 최초 변경점(Start) 이후 엔드유저에게 릴리즈(OBT Release) 되고, 개발 버전은 Devel-? 라는 이름으로 업데이트, 릴리즈 버전의 버그 패치는 Release Patch-? 으로 업데이트 된다. 필요하다고 생각될때 릴리즈 버전의 패치를 개발 버전에 적용시킬 수 있으며 언제든 원하는 시점으로 돌아가 새로운 노드를 생성할 수 있다. 그리고 changeset 간의 머징도 손쉽다.

첫번째 방법이 더 좋지 않을까 하는 생각도 들긴 하지만.. 수 틀리면 원클릭에 다른 방법으로 언제든 갈아타기 쉽고 풀 히스토리가 남는다는것 역시 DVCS 의 장점인지라.. 일단 돌려 보는데 부담이 없어 좋구나.
2010/05/04 20:24 2010/05/04 20:24