2010-04-18 3 views
0

나는 그것에 관해 비슷한 질문을했지만 여전히 질문 할 필요성을 느끼고있다. 승인을 위해 대기중인 작은 "기능"이 많은 시나리오가 있습니다. 나는 일반적으로 두 가지 접근법을 본다.svn dev주기. howto lots 사소한 "기능"승인 대기 중

1. 트렁크를 견고하게 유지하고 작은 "기능"마다 많은 수의 가지가 있습니다. 근본적으로 모든 새로운 것은 지점입니다.

단점 :
- 아무리 작은 변화라도 많은 가지를 지원하는 악몽이 될 수 있습니다. 모든 브랜치를 동기화하는 등.
-이 테스트 시스템의 설정에서 볼 수 있듯이 승인을위한 변경 사항을 쉽게 검사 할 수 있으므로 (기본적으로 미친 것처럼 보이는 모든 지점을 지원해야 함).

장점 :
- 쉽게 추측 할 수있는 분기가 트렁크에 다시 병합되고 새 릴리스가 태그 지정되고 배포됩니다.

큰 기능을 위해 지점이 해제되고 작은 변경 사항이 모두 트렁크 (비교적 안정적인)로 직접 이동합니다.

장점 : 대부분의 시간대에 테스트 시스템을 설정하는 것이 더 쉬워서 모두 직접 볼 수 있습니다. 큰 특징은 테스트에서 별도의 지점을 유지하기 쉬워야합니다.
단점 :
- 출시 방법을 실제로 알지 못합니다. 나는 기본적으로 트렁크의 한 부분을 릴리즈 할 수 없을 것입니다. 이것은 따르기 미친 cherrypicking을 포함 할 것입니다. 다른 접근 방법은 일정한 시간 (일주일 정도) 후에 모든 작은 기능을 승인해야 새로운 작업을 수행 할 수 있다는 것입니다. 방금 ​​릴리스 분기를 만들고 작은 기능 중 일부 또는 전부를 사용하지 않습니다. 이것은 머리 사람들과 재미있는 토론이 될 것입니다.

나는 작은 보류 물건을 많이 가지고 기술적으로 따라 매우 문제가되는 것 같아요.

답변

0

TFS를 사용하지만 전략은 같습니다. 옵션 1은 가장 깨끗한 접근이지만 여러 분기에 오버 헤드가 합쳐집니다. 테스트되지 않은 코드와 새 분기로 오염되지 않은 트렁크가 안정적인 코드베이스에서 생성 될 수 있기 때문에 좋습니다. 독립적 인 테스트를 위해 자체 지사에서 각 기능을 릴리스 할 수도 있습니다.
변경 사항이 실제로 중요하지 않고 상호 독립적 (즉, 동일한 소스 파일에는 영향을 미치지 않는 경우) 할 수있는 또 다른 접근법은 기능 분기를 만든 다음 해당 분기의 각 기능에 태그를 지정 (레이블 지정)하는 것입니다. 따라서 각 기능을 빌드하고 테스트하기위한 레이블 버전을 얻을 수 있습니다. 그러나 주기적으로 점점 더 많은 코드가 변경됨에 따라이 지점을 제거해야합니다.