다음을 통해 공유


효과적인 분기 전략 선택

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

TFVC(Team Foundation 버전 제어) 리포지토리에 대한 분기를 만드는 것은 위험을 격리하는 데 유용합니다. 5명 또는 10명 이상의 직원이 근무하는 소프트웨어 프로젝트에서 작업할 때 팀 구성원이 일반적으로 직면하는 몇 가지 문제를 고려합니다.

  • 그룹에는 몇 가지(또는 여러 개의) 서로 다른 기능 팀이 있으며, 각 팀은 합리적으로 불연속적인 기능 집합을 작업합니다. 그러나 각 팀은 다른 팀에서 빌드한 기능에 따라 달라집니다. 이러한 각 팀에서 수행된 작업에 의해 도입된 변경의 위험을 격리해야 하지만 결국에는 모든 노력을 하나의 제품으로 병합해야 합니다.

  • 테스트 팀은 테스트할 안정적인 버전의 코드가 필요하지만 동시에 개발자는 때때로 제품을 불안정하게 만드는 새로운 기능을 계속 진행해야 합니다.

  • 이 소프트웨어에는 이전 버전 2개와 현재 버전 1개가 진행 중입니다. 대부분의 개발 노력이 현재 버전에 투자되어 있더라도, 이전 버전은 서비스 팩의 간헐적인 릴리스, 중요한 수정 및 보안 패치 및 기타 변경 내용으로 계속 지원되어야 합니다.

이 문서에서는 올바른 결정을 내리는 데 도움이 되는 몇 가지 일반적인 분기 전략을 살펴봅니다.

리포지토리 범위가 지정된 Git 분기와 달리 TFVC 분기는 경로 범위가 지정되며 경량이 아닙니다. 코드 또는 릴리스 격리를 위해 확실한 필요가 있을 때만 분기하도록 높은 기준을 설정하세요.

주 전용

Main Only 전략은 폴더 기반으로 할 수도 있고, 기본 폴더 분기로 변환하여 추가 표시 기능을 사용할 수 있습니다. 메인 브랜치에 변경 사항을 커밋하고 선택적으로 레이블을 사용해 개발 및 릴리스 마일스톤을 표시할 수 있습니다.

Main Only 분기 전략

위험: TFVC 레이블의 변경 가능성 및 기록 부족으로 변경 제어의 위험이 추가될 수 있습니다.

주요 단일 분기 전략으로 시작하고 에서 전략적으로 분기하여 필요에 따라 더 복잡한 전략으로 발전하기 위해 다른 전략을 채택합니다.

개발 격리

안정적인 메인 분기를 유지 관리하고 보호해야 하는 경우, 메인에서 하나 이상의 개발 분기를 생성할 수 있습니다. 격리 및 동시 개발을 가능하게 합니다. 작업은 기능, 조직, 임시 공동 작업 등 다양한 기준에 따라 개발 분기에서 격리될 수 있습니다.

개발자 격리 분기 전략

기본 분기에 변경 내용이 있을 수 있습니다. 항상 FI(전방 통합) 기본개발 분기로 통합하고 병합 충돌을 해결합니다. 그런 다음 변경 사항을 메인로 다시 통합(RI)하세요. 분기 간에 동일한 품질 표시줄을 유지 관리합니다. 개발 환경에서 메인 과 동일한 방식으로 빌드 확인 테스트(BVT)를 빌드하고 실행합니다.

참고: 이 전략을 통해 팀은 개발 분기를 영구적으로 유지하여 결과적으로 큰 병합 티켓 이력을 쌓을 수 있습니다.

특성 격리

기능 격리는 개발 격리의 특별한 파생으로, 표시된 대로 또는 개발 분기에서 하나 이상의 기능 분기를 분기할 수 있습니다.

기능 격리 분기 전략

특정 기능에서 작업해야 하는 경우 기능 분기를 만드는 것이 좋습니다.

기능 작업 및 관련 기능 분기의 수명을 짧게 유지합니다. 상위 브랜치에서 FI(앞으로 통합) 변경 사항을 자주 통합합니다. RI(역방향 통합)는 일부 합의된 팀 조건(예: 완료 정의)이 충족되는 경우에만 부모로 다시 연결됩니다. 기능 롤백은 비용이 많이 들 수 있으며 테스트를 다시 설정할 수 있습니다.

격리 해제

릴리스 격리는 메인에서 하나 이상의 릴리스 분기를 도입합니다. 이 전략을 통해 동시 릴리스 관리, 다중 및 병렬 릴리스 및 코드베이스 스냅샷을 릴리스 시간에 지정할 수 있습니다.

릴리스 격리 분기 전략

릴리스를 최종 확정할 준비가 되면 릴리스용 새 분기를 만들어야 합니다.

메인에서 절대 앞으로 통합(FI)하지 마십시오. 액세스 권한을 사용하여 릴리스 분기를 잠그고 릴리스의도하지 않은 수정을 방지합니다. 릴리스 분기에 대한 패치 및 핫 픽스는 역방향 통합(RI)을 통해 메인 분기로 되돌릴 수 있습니다.

참고: 분기 시나리오는 변경할 수 없으므로 릴리스 분기에서 응급 핫픽스가 수행되는 것을 알 수 있습니다. 복잡성 및 관련 비용을 놓치지 않고 요구 사항에 맞게 각 전략을 진화합니다.

서비스 및 릴리스 격리

서비스 및 릴리스 격리 전략은 유지 관리 분기를 도입합니다. 이 전략을 사용하면 릴리스 시 서비스 팩 및 코드베이스 스냅샷을 동시에 관리할 수 있습니다.

서비스 릴리스 분리 전략

고객이 다음 주 릴리스 및 릴리스당 추가 서비스 팩으로 업그레이드하기 위한 서비스 모델이 필요한 경우 이 전략을 사용합니다.

릴리스 격리와 마찬가지로 릴리스를 잠글 준비가 되면 서비스 격리 및 릴리스 분기가 만들어집니다. 기본에서 서비스로 절대 앞으로 통합하지 마세요, 또는 서비스에서 릴리스로 통합하지 마세요. 수정이 이루어지지 않도록 릴리스 분기를 잠그십시오. 향후 서비스 변경은 서비스 분기에서 수행할 수 있습니다.

해당 수준의 격리가 필요한 경우 후속 릴리스에 대한 새 서비스 및 릴리스 분기를 만듭니다.

서비스, 핫픽스, 릴리스 분리

권장되지는 않지만, 추가 핫픽스 분기 및 관련 릴리스 시나리오를 도입하여 전략을 계속 발전시킬 수 있습니다.

Service HotFix 릴리스 격리 분기 전략

이 시점에서 몇 가지 일반적인 TFVC 분기 시나리오를 살펴보는 데 성공했습니다. 이러한 기능을 개선하거나 기능 토글, 기능 설정/해제와 같은 다른 전략을 조사하여 런타임에 기능을 사용할 수 있는지 여부를 확인할 수 있습니다.

Q&A

분기가 수명이 짧아야 하는 이유는 무엇인가요?

브랜치를 짧게 유지하면 병합 충돌을 가능한 한 최소화할 수 있습니다.

필요한 경우에만 분기하는 이유는 무엇인가요?

DevOps수용하려면 빌드, 테스트 및 배포의 자동화에 의존해야 합니다. 변경은 계속일어나며, 자주 발생하는 병합 작업은 충돌이 잦아 수동 개입이 필요해 더 어렵습니다. 따라서 분기를 피하고 대신 이와 같은 기능 토글과 같은 다른 전략에 의존하는 것이 좋습니다.

가지를 제거하는 이유는 무엇인가요?

가능한 한 빨리 변경 내용을 다시 메인 에 가져와 장기적인 병합 결과를 완화하는 것이 목표입니다. 임시, 사용되지 않거나 불필요하게 많은 분기는 팀에 혼란과 부담을 초래합니다.

코드베이스를 프로젝트 간에 분기할 수 있나요?

예. 팀이 원본을 공유해야 하고 공통 프로세스를 공유할 수 없는 한 권장되지 않습니다.

코드 승격 전략은 어떻습니까?

코드 승격 전략은 폭포 개발 시대의 유물처럼 느껴집니다. 일반적으로 긴 테스트 주기와 별도의 개발 및 테스트 팀이 있습니다. 전략은 더 이상 권장되지 않습니다. 이 전략에 대한 자세한 내용은 분기 지침을 참조하세요.

개발 브랜치를 메인 브랜치에 합칠 때, 왜 변경 사항이 검출되지 않나요?

예를 들어 keep source 충돌 해결 옵션을 사용하여 이전 병합의 변경 내용을 무시했을 수 있습니다. 개발 분기를 기본으로 병합하는 을 참조하세요. 자세한 내용은 병합에서 변경사항이 없었습니다.

TFVC와 Git 분기 전략 간에 유사점이 있나요?

TFVC 기능 격리 분기 전략은 Git 의 토픽 분기와 유사합니다.

저자: 제시 후윙, 마커스 페르난데스, 마이크 푸리, 그리고 ALM의 윌리 쇼브 | DevOps 레인저스. 여기에서 연락할 수 있습니다.

(c) 2015 Microsoft Corporation. 모든 권리 보유. 이 문서는 "as-is"으로 제공됩니다. URL 및 기타 인터넷 웹 사이트 참조를 포함하여 이 문서에 표현된 정보 및 보기는 예고 없이 변경될 수 있습니다. 이 문서의 사용으로 발생하는 위험은 귀하의 책임입니다.

이 문서는 Microsoft 제품의 지적 재산권에 대한 법적 권리를 제공하지 않습니다. 이 문서는 내부 참조용으로 복사 및 사용할 수 있습니다.