티스토리 뷰

Git

Vincent Driessen Branch Model + Git Flow

Better than alone 2018. 4. 4. 12:46

# Branching Model

    모델 개요
    • 빈센트 드리센(Vincent Driessen)의 branch model을 적용하는 툴은 git-flow를 사용한다.
  • branch flow
    • 일반 개발/배포 life-cycle
      • develop - feature – develop – release – master/develop
    • 긴급 배포 life-cycle
      • master - hotfix – master/develop
  • 각 branch 설명
    • master : 최종 릴리즈한 안정화 버전
      • 이미 배포 했거나 곧 배포할 코드가 관리되는 브랜치이다.
      • master 브랜치에 머지된 소스는 발견된 모든 버그를 제거한, 즉시 production환경(운영환경)에 배포 가능한 소스이여야 한다.
      • master 브랜치에 머지가 발생한다는 것은 새로운 버전의 배포가 시작된다는 것을 의미한다.
    • develop : 다음 릴리즈를 위해 개발중인 최신 버전
      • develop 브랜치는 integration 브랜치라고 말하기도 하며, 모든 개발 버전 소스가 통합관리는 브랜치이다.
      • 모든 개발자들이 함께 관리하는 브랜치이며, 코드가 안정화 되면 release 브랜치를 거처 master 브랜치로 머지된다.
      • develop 브랜치는 CI서버에서 nightly build를 수행하여, 항상 컴파일이 가능한 상태를 확인/유지한다
    • feature : 특정 기능 개발을 위한 branch
      • 새로운 기능을 추가하는 브랜치이다.
      • 하나의 feature 를 여러명이 같이 작업하는 경우에만 
      • 아주 간단한 수정(side-effect가 없다고 확신하는 경우)은 예외적으로 feature branch 생성 없이 바로 develop 에서 작업을 허용한다.
    • release : 릴리즈 점검을 위한 branch
      • 새로운 Production 릴리즈를 위한 브랜치이다.
      • 지금까지 한 기능을 묶어 develop 브랜치에서 release 브랜치를 따내고, develop 브랜치에서는 다음번 릴리즈에서 사용할 기능을 추가한다.
      • release 브랜치에서는 버그픽스에 대한 부분만 커밋하게되고, 릴리즈가 준비되었다고 생각하면 master로 머지를 진행한다
    • hotfix : 긴급 버그 픽스를 위한 branch
      • Production에서 발생한 버그들은 전부 여기로… 수정 끝나면,  develop, master 브랜치에 반영하고, master에 다가는 tag 를 추가해준다.
      • 만약 release 브랜치가 존재한다면, release 브랜치에 hotfix 브랜치를 머지하여 릴리즈될때 반영이 될 수 있도록 한다.

# 태깅 규약

  • 태깅 주의사항
    • master branch 의 변화가 발생되면 반드시 아래의 버전 명명규칙에 맞게 태깅을 한다. (릴리즈 종료, 핫픽스 종료)
    • 태깅 vesion, ver., v 등 버전을 의미하는 키워드는 v로 통일한다 (dot(.) 없음)
      • 주의) 브랜치명에는 v 키워드는 사용하지 않는다.
        • ex) release/v1.0.0 (x), release/1.0.0
  • 버전 명명 규칙
    • 포맷 : [Major].[Minor].[Hotfix]
    • 포맷 설명
      • ex) 1.1.0 / 1.1.1 / 1.12.2 / 1.0.1
      • Major : 이전버전과 하위호환을 보증할 수 없다면 Mojor를 올려야 한다.
      • Minor : 기능추가나 기능변경이 있거나, API가 변경된다면 Minor를 올려야 한다
        • 리눅스등 오픈 소스에서는 Minor버전의 홀수는 테스트가 충분하지 않은 경우, 짝수는 테스트로 안정화된 버전을 의미하지만 FIS에서는 별도로 구분하지 않는다.
      • Hotfix : 보통 Patch버전이라 한다. 0부터 순차적으로 올라가면 된다.
    • 기타사항
    • 릴리즈시부터 버전명이 부여된다.

      • ex) release/1.15.0
      • 버전은 master브랜치에서 tag를 통해 부여한다.

git-flow 사용방법

  • Git Client GUI tool
    • Sourcetree 는 git-flow가 내장되어 있다.
  • Intellij IDE
  • git 테스트용 저장소
    • git branch 테스트는 아래저장소를 이용한다.


반응형

'Git' 카테고리의 다른 글

source tree에서 merge tool 변경 (p4merge)  (0) 2019.07.17
git branch / merge 등  (0) 2018.07.02
Git 브랜치 활용법  (0) 2018.03.20
댓글