Open Pyohwan opened 4 years ago
https://martinfowler.com/articles/branching-patterns.html
사본을 작성하고 모든 변경 사항을 기록
제품의 현재 상태로 작동하는 단일, 공유, 브랜치
각 커밋마다 브랜치 결함이 없는지 확인하기 위해 테스트 빌드 와 같은 자동 검사 수행
개발자는 메인라인에서 pulling 하고 병합 - 만약 healthy 하면 메인라인으로 pushing
기능에 대한 모든 작업을 자체 브랜치로 두고, 기능이 완료되면 메안라인으로 통합해라.
개발자는 일반적으로 하루 미만의 작업으로 공유할 수 있는 건강한 커밋을 즉시 메인 라인 통합을 한다.
메인라인에 대한 모든 커밋이 수락되기 전에 동료가 검토한다 코드 리뷰는 코드 품질을 향상 시키고, 모듈화, 가독성을 향상 시키며, 결함을 제거하므로 오랫동안 장려 해왔다. 상용 조직에서는 개발 워크플로우를 맞추기가 어렵다는 것을 알게 됨 오픈소스 세계에서는 널리 사용됨 Reviewed Commits 은 오픈 소스에서 인기를 끌었고, 헌신적인 메인티너와 컨트리뷰터가 있는 조직 모델과 잘 어울린다. Reviewed Commits 의 약속을 위한 규율을 정하는것이 중요 어떤 개발자가 어떤 일을 마치고 다른 일을 한다면? 검토 확정까지 추가 적인 개발이 어렵다. Reviewed Commits 와 Continuous Integration 은 함께 할 수 있긴 한데, Reviewed Commits and Feature Branching 이 일반적인 조합이다. When to use it 지난 10년 동안 Reviewed Commits 은 관행이 되었지만, 단점과 대안이 있다. Reviewed Commits 을 잘 수행해도, 통합 프로세스에 항상 약간의 대기시간 발생하여 통합 빈도가 낮아진다. Pair Programming 은 코드 리뷰보다 빠른 피드백 가능 Reviewed Commits 을 사용하는 팀은 빠르게 커밋하지 않는다. 귀중한 피드백은 너무 늦어서 유용하지 않다. reviewed commits 은 귀중한 관행이 될 수 있지만, 리더에 지나치게 의존하지 않는 균형 잡힌 팀을 키우려는 경우, 건강한 코드 기반으로의 필수 경로는 아니다.
메인라인에 대한 모든 커밋이 수락되기 전에 동료가 검토한다
릴리스 준비된 제품 버전을 안정화 하기 위해 커밋만 수락하는 지점
코드기반 성숙도의 버전을 표시 "production branch", "staging branch", and "QA branch" 과 같은 분기
코드기반 성숙도의 버전을 표시
소스 코드 커밋을 적용한 새 환경에서 실행되는 제품 구성 소프트웨어는 일반적으로 워크스테이션, 프로덕션 서버 등 다양한 테스트 및 스테이징 환경에서 실행해야 한다. 메인라인에서 새분기를 만들고, 적절한 환경 변경 사항을 적용하고, 제품을 재구성해서, 스테이징 환경에 배치한다. 변경 사항은 일반적으로 수작업으로 적용 When to use it 새로운 환경에 대비할 수 있는 좋은 방법이지만, 매우 고전적인 안티 패턴이다. 모든 환경에서 실행되는 동일한 실행 파일이 필요하며, 환경 파일은 분리시켜야 한다.
소스 코드 커밋을 적용한 새 환경에서 실행되는 제품 구성
긴급한 프로덕션 결함을 해결하기 위한 작업을 캡쳐 지점 프로덕션에 심각한 버그가 나타나면 가능한 빨리 수정해야 한다. 수정이 적용된 프로덕션의 핫픽스는 메인라인에 적용되고, 다음 버전에서 회귀가 발생하지 않도록 해야 한다.
긴급한 프로덕션 결함을 해결하기 위한 작업을 캡쳐 지점
정기 일정으로 출발하는 열차처럼 정해진 시간 간격으로 출발 2주 마다 또는 6개우러 마다 정기적으로 릴리스를 설정 기능이 완료될 시기를 예측하는데 도움 단점은, 중요 기능이 몇주 또는 몇 달 동안 누락 되어 있음 릴리스 트레인을 사용하다가, 팀이 점점 나아지면 결국 continuous delivery 로 갈 수 있다.
정기 일정으로 출발하는 열차처럼 정해진 시간 간격으로 출발
메인라인 헤드를 항상 프로덕션에 넣을 수 있도록, 메인라인을 건강하게 유지 메인라인이 건강하면 언제든지 메인라인을 릴리스해서 태그로 릴리스 기록 가능하다
메인라인 헤드를 항상 프로덕션에 넣을 수 있도록, 메인라인을 건강하게 유지
https://martinfowler.com/articles/branching-patterns.html
Patterns for Managing Source Code Branches
Base Patterns
Source Branching
When to use it
Mainline
When to use it
Healthy Branch
When to use it
Integration Patterns
Mainline
Feature Branching
Integration Frequency
Low-Frequency Integration
High-Frequency Integration
Comparing integration frequencies
Continuous Integration
Comparing Feature Branching and Continuous Integration
Feature Branching and Open Source
Reviewed Commits
Integration Friction
The Importance of Modularity
Personal Thoughts on Integration Patterns
The path from mainline to production release
Release Branch
When to use it
Maturity Branch
Environment Branch
Hotfix Branch
Release Train
Release-Ready Mainline
When to use it
Final Thoughts and Recommendations