티스토리 뷰
# Branching Model
- 모델 개요
- http://nvie.com/posts/a-successful-git-branching-model/
- 간략한 흐름 예시
- 빈센트 드리센(Vincent Driessen)의 branch model을 적용하는 툴은 git-flow를 사용한다.
- branch flow
- 일반 개발/배포 life-cycle
- develop - feature – develop – release – master/develop
- 긴급 배포 life-cycle
- master - hotfix – master/develop
- 일반 개발/배포 life-cycle
- 각 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 : 최종 릴리즈한 안정화 버전
- 빈센트 드리센(Vincent Driessen)의 branch model
# 태깅 규약
- 태깅 주의사항
- master branch 의 변화가 발생되면 반드시 아래의 버전 명명규칙에 맞게 태깅을 한다. (릴리즈 종료, 핫픽스 종료)
- 태깅 vesion, ver., v 등 버전을 의미하는 키워드는 v로 통일한다 (dot(.) 없음)
- 주의) 브랜치명에는 v 키워드는 사용하지 않는다.
- ex) release/v1.0.0 (x), release/1.0.0
- 주의) 브랜치명에는 v 키워드는 사용하지 않는다.
- 버전 명명 규칙
- 포맷 : [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-flow 설치
- $ brew install git-flow
- Git Flow Integration plugin 설치
- 셋팅 및 사용법은 아래 참고
git 테스트용 저장소 - git-flow 설치
- git branch 테스트는 아래저장소를 이용한다.
참고 링크
반응형
'Git' 카테고리의 다른 글
source tree에서 merge tool 변경 (p4merge) (0) | 2019.07.17 |
---|---|
git branch / merge 등 (0) | 2018.07.02 |
Git 브랜치 활용법 (0) | 2018.03.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Excel
- Note App
- Bruteforce
- nbconvert
- 이클립스메모리분석툴
- graph traversals
- minor GC
- 동시설치
- dynamic programming
- unreachable object
- ipynb
- Python
- SecurityContextRepository
- Markdown Note
- Open ID Connect
- ICPC
- 메모리제한
- SecurityContextPersistenceFilter
- Divide&Conquer
- 여러 파일 하나로 합치기
- anaconda설치
- 엑셀
- backtracking
- 인쇄열고정
- greedy
- 스도쿠
- type명령어
- DP
- anaconda2
- 인쇄행고정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함