이 기사 인 성공적인 Git 브랜칭 모델 은 숙련 된 DVCS 사용자들 사이에서 잘 알려져 있다고 생각 합니다.
나는 hg
주로 사용 하지만이 토론은 모든 DVCS에 적합하다고 주장합니다.
현재 워크 플로는 각 개발자가 마스터 리포지토리를 복제하는 것입니다. 우리는 우리 자신의 로컬 저장소에 코드를 작성하고 테스트를 실행하며 모든 것이 잘되면 마스터에게 푸시합니다.
따라서 Jenkins와 같은 CI 서버를 설정하고 향후 프로비저닝 시스템 (chef, puppet, ansible 등)으로 워크 플로를 개선하고자합니다.
진짜 부분
글쎄, 위의 모델은 훌륭하지만 브랜치는 CI를 손상시킬 수 있습니다. development
CI와 병합을 원활하게 하려면 피처 브랜치 (기사에 따르면 브랜치가 됨)와 원점을 동기화해야 합니까?
Alice와 Bob이 두 가지 기능을 작업하고 있다고 가정합니다. 그러나 앨리스는 다음 날에 끝납니다. Bob의 기능은 일주일이 걸립니다. Bob이 완료 될 때 변경 사항이 오래되었습니다 (Alice가 리팩토링 / 일부 클래스 이름 변경).
해결책은 매일 아침 개발자가 master/origin
변경 사항이 있는지 확인 해야한다는 것 입니다. Alice가 커밋 한 경우 Bob은 작업 영역으로 끌어와 병합하여 기능 분기를 최신 상태로 유지해야합니다.
- 이것이 좋은 방법입니까?
- 이러한 브랜치가 마스터 리포지토리에 존재해야합니까 (로컬 클론이 아닙니까?) 모든 개발자가 GitHub / Bitbucket의 마스터 리포지토리에 권한을 부여하여 새 브랜치를 생성해야합니까? 아니면 로컬로 수행됩니까?
- 마지막으로, 기사가 제시 한 모델은 분기가와 동기화되지 않은 경우 CI를 중단해야합니다
origin/master
. 야간 빌드를 원하기 때문에 개발자가 퇴근하기 전에 끌어서 병합해야하고 각 기능 지점에서 CI를 실행해야합니까?