2009-07-21 5 views
4

우리는 계단 분기를 사용하는 프로젝트를 만났습니다. 명확히하기 위해 코드가 개발을 위해 분기되는 방식이며 개발이 완료되면 트렁크/기본 회선으로 전환하지 않고 dev 브랜치를 라이브 코드 세트로 지정하고 새 분기를 브랜치에서 가져옵니다. 이것은 무한대로 지속됩니다."계단"분기의 이점은 무엇입니까?

개인적으로 단일 "라이브"코드 세트를 유지하기 위해 트렁크 방식으로 줄이는 것을 선호합니다. 그러나 나는 계단 접근에 어떤 강점이 있는지 궁금해하고있다.

덕분에, 톰

답변

3

이 방법을 사용하면 여러 가지 가지를 만들고 동시에 개발할 때 도움이됩니다. 트렁크에 다시 병합하면 병렬 분기를 가지며 한 번에 하나의 분기로 쉽게 가져올 수 있습니다.

0

는이 방법 (잠재적으로 작은) 혜택의 몇 가지가 있습니다.

가장 큰 장점은 변경 사항을 주 분기로 병합해야 할 필요가 없기 때문에 발생합니다. 이렇게하면 분지가있는 버전에 대한 브랜치 (이전 "트렁크")를 유지하는 것은 물론 dev 브랜치를 계속 사용하지 않아도됩니다. 실제로 이것은 하나의 라이브 트렁크를 가지거나 릴리스 용으로 태그를 지정하거나 분기하는 것과 다르지 않습니다. 단, 태그가있는 분기를 이동하는 대신 개발을 "이동"한다는 점만 다릅니다. 이렇게하면 각 릴리스마다 새 분기를 "태그 지정"할 필요가 없으므로 적은 노력으로 깨끗한 분기를 유지하는 것이 더 쉬워집니다. 단지 자동으로 발생합니다. 하지만 이것은 약간의 시간 단축입니다.

내 경험에 따르면 잠재적 인 단점이 있습니다. 나는 종종이 접근법이 개발자가 우발적으로 라이브러리의 바이너리 호환성을 쉽게 깨뜨리는 것을 종종 발견했습니다. 개발자가 항상 개발 카피에서 작업하고 있고, 각 "릴리스"는 그와 별개의 지점이기 때문입니다. 트렁크에 다시 병합 할 때 필요한 노력이 없으므로 실수로 API를 중단 할 수 있습니다. 이것은 IMO의 주요 관심사는 아니지만 인식해야 할 부분입니다. 병합 프로세스 중에 아무런 노력이 없기 때문에 (대부분의 실수가 종종 발견되는 것 같습니다).

1

나는 롤백하기가 더 쉽고 버전 간의 차이점이 조금 더 명확해질 것이라고 믿습니다. 또한 이전 버전 (예 : 개발자 용 버전 및 디자이너 용 버전)을 계속 개발하는 것이 더 쉽습니다.

나 자신은 검사 점을 나타내는 태그를 사용하는 다른 방법을 선호합니다. 나는 자식을 사용하고, 이런 종류의 것들을 분기하고 수행하는 과정은 실제로 잘 구축되어있다.

1

첫 번째 계단이 시작될 때부터 첫 번째 릴리스를 개발할 때와 같은 위치에 있습니다. 입니다.입니다. 메인 트렁크로 무엇을 되돌릴 지에 대한 늦은 결정이 없습니다. 계단에서 올라온 빌드가 최신 후보입니다.

원래의 변경 및 수정 사항이 많이 병합되어 있다면 병합에 영향을 주어 벌금이 부과 될 수 있습니다. 나는 새로운 릴리스의 변경 비율과 오래된 패치의 비율이 차선책 인 경우 손익분기 점이 있다고 추측합니다.

관련 문제