2012-12-14 3 views
7

저희 팀에 힘줄 흐름을 소개하려고합니다. 우리는 상당히 작은 팀이며 매우 민첩합니다. 우리는 하루에 한 번씩 공개하기를 원합니다. 이는 하루의 모든 변경 사항을 테스트하기위한 시간이 제한적이라는 것을 의미합니다. 비즈니스 팀은 이상적인 것은 아니지만 출시되는 기능을 제어 할 수 있기를 원합니다.git flow에서 선택된 기능 해제하기

힘줄 흐름이이 문제를 잘 처리하지 못하는 것 같습니다. 릴리스 지점을 잘라낸 후 선택한 기능을 마스터에 병합하는 가장 좋은 방법을 개발합니다. 체리가 유일한 선택입니까? 더 좋은 방법이 있습니까?

답변

7

표준 git flow 처리는 비즈니스 팀이 다음 출시 할 기능을 제어하려는 경우 이상적이지 않습니다. 그러나 다른 브랜칭 메커니즘에도 동일한 문제가 있습니다.

git flow의 기본 구조는 각 새 기능에 대한 기능 분기를 만드는 것입니다. 새 기능을 빌드하고 테스트 한 후에는 분기를 개발 분기로 병합 한 다음 기능 분기를 제거합니다. 그런 다음이 기능은 다음 릴리스에 포함될 것입니다.

기능이 다음 릴리스에 포함되어서는 안되는 경우 기능 분기를 개발 분기로 병합해서는 안됩니다. 그것이 포함되지 않도록하는 가장 좋은 방법입니다. 또한 다른 개발자가 새 기능을 사용하는 코드를 만들지 못하게합니다.

체리 피킹을 권장하지 않습니다. 첫째, 기능은 여러 개의 커밋을 가질 수 있고 자주 커밋 할 수 있으며 잊어 버리기 쉽습니다. 둘째, 기능 B가 기능 A에 추가 된 코드를 사용하고 관리자가 기능 A를 해제하지 않고 기능 B를 릴리스하려는 경우 기능 B가 손상된 것입니다. 그리고 그 의존성은 항상 쉽게 찾아 낼 수있는 것은 아닙니다.

경영진은 새로운 기능의 우선 순위를 지정하려고하지만 각 기능은 완료된 후 곧 테스트 분기에 병합되어야합니다.

0

각 기능에 자체 분기가있는 경우 해당 기능 분기를 병합하기 만하면됩니다.

+0

흠, 실제로이 기능을 선택하면 사용자가 실제로 출시되는 기능을 선택할 수 있다는 문제를 어떻게 해결할 수 있습니까? – pal4life

+0

'git checkout master; 자식 병합 기능 1 기능 2 기능 3 기능 4 '- 필요한 것은 아닌가요? 해당 분기를 병합하여 해제 할 기능을 선택합니다. 마스터 분기에 병합되지 않은 기능을 해제하지 마십시오. – aragaer

+0

따라서 출시 예정인 기능을 마스터에 병합하고 기능 분기 내에서만 릴리스되지 않는 기능을 남기는 것이 좋습니다. – pal4life