2013년 12월 31일 화요일

Git branching model, 코드 릴리즈를 위한 Git branch 관리 방법

이전 블로그에서 이전 함 (원본 글 2013/12/31 작성)

Git 으로 코드를 개발, 관리 하면서 
코드 릴리즈는 단순히 regression 테스트 후 tagging하고 release하는 방법을 많이 사용했었음.
프로젝트가 어느정도 규모가 될 경우에 뭔가 효율 적인 git branch 관리 방법이 필요하겠구나 생각했었는데, 어찌어찌 하다 보다 보니 아래와 같은 article이 있어 링크함.

A successful Git branching model by Vincent Driessen

이전에 관리했던 프로젝트는 소규모의 프로젝트 였던 관계로 단순히 develop, master만 유지하였음에도 불구하고 branch간 merge가 생각보다 쉽지가 않았음.

위 article에서는 아래와 같은 branching model을 추천하고 있고 다소 규모가 있는 프로젝트를 위한 것으로 생각되나 몇몇 부분은 일반적으로 필요한 내용임.


보통 사용하는 develop, master branch 외 hotfixes, feature, release branch들을 두어 관리하는 방법으로 보이고 가장 공감하는 부분은 --no-ff merge와 hotfix branch 부분이다.


--no-ff merge 관련해서는 이전에는 여러 개발자들이 private branch에서 개발을 하던 내역을 모두 develop branch에 넣게 되었는데 불필요한 commit의 history로 인해 develop branch 관리가 어려웠었다. 되도록이면 개발자에게 private branch에서 feature가 개발이 어느정도 완료 되거나 bug 수정이 완료된 상태를 develop로 merge하는 것이 권장하는 것이 좋겠다는 생각을 함.


hotfix branch 관련해서는 stable version을 release 해도 버그는 언제나 발견이 되고 급하게 수정을 하는 경우가 있었는데 그냥 다시 develop에서 수정해서 해당 내역을 master에서 cherry pick을 했었다. 이런 경우 develop branch와 master branch간의 코드 불일치로 소스코드 반영 및 테스트에서 소소한 불편함이 있었다. 별도로 master branch(release branch도 되지 않을까?)기반의 hotfix branch를 사용하면 괜찮을 것으로 생각함.

Git GUI client 추천 : 일반적으로 msysgit을 사용하겠지만 난 좀 직관적으로 보이지 않더라...
유로지만 개인 개발자에게는 공짜이고 초보자에겐 간단한 look and feel !!!

댓글 없음:

댓글 쓰기