2011-10-31 7 views
2

우리는 제품을 개발하여 여러 고객에게 제공하고자합니다. 이제 일부 고객은 추가 기능 x를 갖고 다른 고객은 기능 y를 갖고 싶어합니다. 일부 기능은 제품의 소프트웨어 아키텍처에도 약간의 변경이 필요합니다.다른 버전의 제품 프로젝트 구조

모든 고객은 물론 모든 고객이 정의한 공식 기능의 혜택을 원합니다.

이제 제 질문은 어떻게 처리하는 것입니까? 우리는 현재 버전 관리를 위해 SVN을 사용하고 있으며 이것은 하나의 트렁크와 태그를 생성 할 수있는만큼 오래 사용할 수 있습니다.

각 고객에 대해 여러 트렁크를 만든 다음 모든 기능을 여러 고객 트렁크에 병합 할 수 있음을 알고 있습니다. 그러나 이것은 수작업으로 이루어지며 매우 신속하게 혼란 스러울 수 있습니다. 당신의 도움이

답변

3

이 큰, 털이 주제에 대한

감사합니다 - 마틴 파울러 분기 기능의 큰 쓰기 업 (http://martinfowler.com/bliki/FeatureBranch.html)이있다; 또한 추상화 별 브랜치 (http://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/)가 있습니다.

큰 위험은 "적절한"아키텍처를 위해 SVN을 스탠드 인으로 사용하는 것입니다. 이러한 방식으로 여러 기능을 지원해야하는 경우 런타임을 통해 (구성을 통해) 또는 빌드시 (구성을 통해)이를 지원하는 솔루션을 설계해야합니다. 이를 수행하는 일반적인 방법은 플러그인을 사용하는 것입니다.

소스 코드 제어 시스템을 사용하여 기능을 "병합"하면 병합 프로세스가 예측할 수없고 불안정한 혼란에 빠지게됩니다. 즉, 다른 분기의 코드로 병합 할 수 있다는 의미는 아닙니다. 다른 기능/지점에서 작업하는 개발자는 서로의 작업을 복제하거나 디자인에 대해 상호 배타적 인 결정을 내릴 수 있습니다.