-
Notifications
You must be signed in to change notification settings - Fork 1
branch strategy
github flow를 base로 프로젝트에 적합하게 수정함.
각 branch 및 commit의 상태를 시각화 하기 위해 팀원은 "GitKraken", 혹은 "Sourcetree"를 사용한다.
vsCode용 확장 프로그램인 "git graph"를 사용하는 것도 지향한다.
remote 저장소의 branch 구성은 다음과 같다.
- master
- develop
local 저장소의 branch 구성은 다음과 같다.
- develop
- feature/XXX
LTS 버전을 저장하는 branch.
cloud에 배포하는 코드이다.
master branch 가 갱신된 경우 배포 cloud 서버도 갱신한다.
매주 목요일 develop branch에서 merge 한다.
master branch의 내용이 업데이트 되는 경우 git tag를 이용한다.
하루 혹은 이틀에 한번 각자 local의 develop branch들에서 날아온 PR을 merge해 갱신한다.
PR끼리 충돌이 잦을 수 있으므로 코드리뷰시 자신의 코드와 conflict 문제가 생기지 않는지 꼼꼼히 검토한다.
remote의 develop branch가 merge되어 갱신된 경우 pull로 최신 상태로 업데이트 한다.
feature branch와 충돌이 잦을 수 있다.
각자 개발중인 기능을 나타내는 branch이다.
모든 feature branch는 최신 상태의 develop branch에서 파생되어야 한다.
branch의 이름은 "feature/기능명"으로 구성할 수 있도록 한다.
프로젝트 초기 구성이 완료된 remote-master branch에서 remote-develop branch를 생성한다.
각 팀원은 remote 저장소에서, develop branch만 --single-branch 옵션으로 clone한다.
각자의 local-develop branch에서 개발할 feature branch를 생성한다.
feature branch에서 작업 후, 완료되었을 시 다음과 같은 순서를 따른다.
- 자신 local의 develop-branch를 pull해 최신으로 유지한다.
- local-develop와 local-feature을 merge한다.
- local-develop에서 remote-develop으로 PR을 보낸다. local-feature에서 따로 세부적인 branch를 생성해 작업할 수 있다. 다만 local-develop에 merge하기 전 branch를 전부 정리하도록 한다.
remote-develop의 merge 권한은 그 주의 팀장이 갖는다.
코드리뷰를 진행한 PR만 merge할 수 있도록 한다.
각 팀원은 conflict가 발생하지 않도록 코드 리뷰를 진행한다.
충돌이 났을 경우, 충돌이 난 인원끼리 모여 충돌 부분을 개선한다.
공통적으로 사용 및 수정하는 파일의 경우는 PR을 주기적으로 날리고, merge할 수 있다.
각 기능을 개발하며 충돌이 날 수 있으므로 코드의 모듈화를 통해 충돌을 예방하는 전략을 사용한다.