2009-07-21 3 views
4

"branch per feature"및 this one too에 대해이 게시물을 읽었으며 얼마나 많은 사람들이이 개념을 사용하고 있는지 궁금해합니다. 나는 연속적인 통합과 각 체크 인에 대한 태그 지정을하고있다. 그리고 반복의 끝에서 나는 스프린트 결과를 확인하기위한 특별한 태그 세트를 만든다. 필자는 각 기능 개발을위한 특별한 지사를 만들어서 더 이상 활용할 필요가 없었습니다.소스 제어 개념 - 기능 당 분기, 체크 당 태그

질문 : 누구든지 코드 기반에서 각 기능을 개발하기 위해 코드를 분기합니까? 그렇다면 왜 그 일을합니까? 그리고이 과정에서 얻은 이점은 무엇입니까? 팀의 비 프로세스 지향 개발자가이 접근법을 구매합니까?

답변

2

나는 그런 것을 들어 보지 못했다. 나에게 분기하는 것의 남용과 같다. 나는 그것이 우리가 "feature"라는 단어의 의미에 달려 있다고 생각합니다. 유스 케이스인가? 사용자 이야기? 전체 반복?

가지가 병렬 개발을 의미합니다. 병행하여 개발하지 않는다면 왜 지회가됩니까?

좋은 SCM의 우리의 호스트, 제프 앳 우드에서 참조 :

  1. Eric Sink
  2. Branching and Merging Primer

그리고, 물론, SVN 팥 책 :

http://svnbook.red-bean.com/

나도 좋아해. hat "Pragmatic Version Control"은 분기 및 태그 지정에 대해 말해야합니다.

+1

나는 동의한다. 필자는 다른 사람의 노력 외에는 병렬로 개발되지 않고 완료 될 때까지 병합되지 않는 한 기능 단위별로 분기 지점을 보지 못합니다. 그렇다면 왜이 기능을 개발하지 않고 계속해서 기본 코드베이스에 지속적으로 통합하지 않는 것이 좋을까요? 모든 기능에 대해 이렇게하려면? –

+1

그것은 많은 경우에 완전한 혼란이 될 것이기 때문입니다. –

1

나에게 기능별 분기는 "X 기능 팀"에 대해 독립적 인 단위로 지능적으로 말할 수있는 충분한 프로젝트가있는 경우에만 의미가 있습니다.

또한 특정 크기 기준 (분명히 퍼지)이 있습니다. 개발자가 10 명인 경우 1 개의 기능 팀만 있습니다. 두 사람이 항상 "위젯 대화 상대"또는 "데이터베이스 사용자"인지 여부는 중요하지 않습니다. 누군가가 주요 리팩터를 수행하고, API에 대한 급격한 변화를 만들고, 많은 BVT가 실패 할 것으로 예상되는 행동을 변경하는 등의 경우에는 개발 분기가 1을 넘을 필요가 있습니다.하지만 그것은 기능 분지가 아닙니다.

개발자가 100 명인 경우 기능 분기가 필요할 수 있습니다. 그것은 당신의 특징이 얼마나 밀접하게 결합되어 있고 SCM 프로세스가 일반적으로, 특히 빌드 품질과 관련하여 얼마나 조심 스러운가에 달려 있습니다. 지형지 물을 가지지 않는 경우에도 일부 가지의 계층 구조가있을 것입니다.

Windows에서 작업하는 경우 레이어 & 층의 레이어는 신의 선물입니다. 커널 팀이 버그를 발표했기 때문에 쉘 팀이 생산성을 낼 수 없다면 큰 문제가 될 수 있습니다.

물론 균형 조정 조치가 있습니다. 일부 대형 조직에서는 기능 분기를 너무 많이합니다. 기능 팀 X가 축복을받은 코드가 Y 팀을 구성하기까지 몇 달이 걸리기 시작하면 병합 + 통합 테스트의 어려움이 처음에 얻으려고했던 코드베이스 안정성보다 중요합니다.(따라서 "MAIN의 트리의 깊이는 MAIN과 반비례합니다.") 그리고 모든 경우에 N 버전의 트리는 릴리스가 가까워지면서 좁혀 야하며 결국에는 해당 릴리스의 트렁크에 직접 체크인하는 경우에만 축소됩니다. 모든 지형지 물이 N + 1을 효과적으로 타겟팅하고 있습니다.

0

기능 분기는 스프린트가 끝날 때 백 로그 항목이 릴리스 될 준비가되지 않은 경우 스크럼과 잘 작동합니다. 당신은 그 상황을 피하기를 희망하지만 때때로 일어날 수밖에 없습니다. 그런 일이 발생하면 완료된 백 로그 항목을 병합하고 그렇지 않은 항목은 병합하지 않습니다. 완료되지 않은 항목은 원하는 경우 다음 스프린트로 이동하거나 백 로그에 다시 넣고 나중에 작업 할 수 있습니다. 어쨌든, 당신은 여전히 ​​브랜치를 가지므로 이미 커밋 한 코드를 버릴 필요가 없습니다.

1

나는 더 나아가 이슈 추적 시스템 (bugzilla, JIRA 등)에서 각 이슈에 대해 분기를 사용하는 "branch per task"을 구현합니다.

그것은 조금 "극단적 인"소리 수 있지만 당신이 지점 힘내, 의욕 또는 플라스틱과 같은 수있는 SCM을 사용하여 제공 팔로우 매우 쉽게 (그리고 나는 물론, 플라스틱으로 바이어스 해요 : P)

관련 문제