지속적으로 개발 된 웹 프로젝트 (제품 아님)에는 대략 git flow를 기반으로하는 다음과 같은 분기 전략이 있습니다 .
- 브랜치 개발 : 최신 작업 버전
- 마스터 브랜치 : 릴리즈 / 릴리스 버전
- 기능 분기 : 개발 기능
- 핫픽스 분기 : 릴리스 된 버전의 긴급 버그 수정
마스터 는 읽기 전용이며 개발 또는 핫픽스 분기의 풀 요청을 통해 업데이트됩니다 . 각 업데이트로 릴리스 후보가 스테이징 시스템에 빌드되고 배치됩니다. 릴리스 후보는 수동 승인 후 프로덕션에 배포됩니다.
기능 브랜치 는 develop을 기반으로 하거나 마스터로 병합 된 마지막 커밋에서 작성 됩니다. 기능 지점에서 개발을위한 풀 요청이 작성되어 통합 테스트 및 승인 테스트 (자동 및 수동)가 실행되는 무료 테스트 시스템에 배포됩니다. 성공적으로 테스트 및 검토되면 PR은 병합되어 다음 릴리스의 일부가됩니다 (즉, 개발에서 마스터로 병합).
내 목표
이것을 단순화하고 개발 지점을 제거하고 싶습니다. 개발 브랜치는 주로 역사적인 이유가 있으며 항상 성공적으로 테스트 된 버전이므로 마스터와 분리 할 필요가 없다고 생각합니다. 제거하면 더 이상 추가 병합이 없으므로 릴리스 프로세스가 단순 해집니다.
다음과 같은 제약 조건이 있습니다.
- 릴리스가 예정되어 있으며 완전히 자동화되어서는 안됩니다
- 기능 분기는 일반적으로 수명이 짧지 만 일부는 몇 주 동안 병합되지 않은 상태로 유지되지만 (예 : 재 설계) 테스트해야합니다 (현재 개방형 풀 요청 개발)
- 때로는 단일 기능이 정식 릴리스 외부에서 릴리스되어 효과적으로 핫픽스로 전환되어야합니다. 현재 전략으로 피쳐 브랜치를 리베이스하고 마스터에 직접 병합 할 수 있습니다
- 또한 스테이징 실패시 외부 시스템을 사용한 승인 테스트 후 기능을 보류해야합니다.
전환에 대해 확신이없는 곳 :
- 현재 릴리스에 대한 테스트 및 병합 커밋에 대한 풀 요청을 작성 중입니다. 이것을 통일 할 수 있습니까?
- 마스터가 최신 릴리스보다 앞서있을 때 핫픽스를 처리하는 방법 핫픽스 분기에서 직접 릴리스를 빌드하고 배포해야합니까?
- 기능이 이미 병합 된 후 릴리스에서 제외되어야하는 기능을 처리하는 현명한 방법이 있습니까? 이 경우 별도의 개발 브랜치가 실제로 이점이 있습니까? 어쨌든 커밋을 되돌 리거나 다시 되 돌리면 대부분 수동으로 커밋됩니다.