2012-10-16 1 views
1

저는 회사에서 모든 x 시간 (일반적으로 3 개월)을 릴리스합니다. 그 시간 동안 우리는 4-6 개의 분기 - 분리 가능 스프린트를 가지며 모든 코드는 해당 분기로 이동합니다.영구 유지 관리 버전으로 SVN 분기

얼마 후 지점이 xxx 버전으로 릴리스되고 다음 버전으로 넘어갑니다. 그러나 평범한 약속으로 인해 몇 달/몇 년 동안 오래된 버전을 유지해야합니다.

버전 - 릴리스로 분기가 올바른지 궁금합니다. 이 때문에 우리 릴리스 버전 브랜치는 결코 트렁크에 완전히 통합되지 않습니다. 그들은 영원히 산다. 버그를 유지하기 위해 트렁크에서 버그를 발견하고 수동으로 브랜치에 포팅하거나 (나는 이것을 선호한다) 대신 브랜치에서 작업하고 트렁크에 커밋 브랜치를 정렬한다. reintegrate) 트렁크에 등을 맞댄. 트렁크에는 아마도 분기가 너무 오래되어 거대한 변경을 지원할 수 없기 때문에 분기에 병합 할 수없는 코드가 트렁크에 포함되어있을 수 있습니다.

우리가 사용하는 방법론의 이점/단점을 알고 있습니까? 유지 보수 가능한 버전을 다룰 수있는 또 다른 방법이 있습니까? 어쩌면 svn 밖에서?

답변

1

버전 - 릴리스로 분기가 올바른지 궁금합니다.

글쎄, 적어도 완전히 잘못된 아니다 - 당신은 관리 코드 모든 시간을. 완전하게 재 통합되지 않은 브랜치는 내부 게임으로, 메인 태스크를 파괴하지 않으면 서 게임을 할 수 있습니다. 출시 될 때마다 제품을 출시하고 오래된 문제를 해결할 수 있습니다. 코드 분할 선은 귀하의 비용입니다

오후부터 "로그 아웃"의 최종 "완료 목록"으로의 변환을 위해 "혼합 된"워크 플로우 (분기 소스 2 개, 병합 세트 및 일반 선형 내역)를 더 열심히 (모든 SCM에서) "브랜치 - 당 - 작업"워크 플로우를 선호하고 광고하며 캠페인을 선호합니다 -이 방법은 브랜치 (개발, 대부분)가 작업과 메인 라인의 짧은 부분과 통합 가능한 부분입니다 & 버전 브랜치는 머지 셋 관찰하기. 그러나 그것은 단지 개인적인 취향과 취향 일뿐입니다.

+0

작업 (지점/기능별 분기)도 마찬가지입니다. 하지만 나는 탈퇴 할 수없는 환경 (웹 앱)에서 일하고있었습니다. 이제는 여러 고객에게 출시 된 브라우저 응용 프로그램에서 작업하므로 그 개념이 괜찮은지 알고 싶습니다. 나는 그것이 OK다는 것을 동의한다. 그것은 단지 .... 조금 어수선하지만 오래된 버전을 유지하는 것이 항상 엉망이라고 생각합니다. –

0

트렁크에 최신 안정 코드를 보관하고 현재 개발 버전이 지점에있을 것이라고 생각합니다. (다른 사람들은 다른 요구 사항에 대해 작업 할 것이므로 많은 버전이있을 것입니다.) 코드는 출시 준비가 될 것입니다. 최신 안정 코드가 될 것이므로 트렁크에 병합 할 것입니다. 동시에 나는 최신 버전 번호로 태그를 붙이고 태그 폴더에 날짜를 발표 할 것입니다.

트렁크에 최신 안정 코드가 있고 태그에 최신 소스 코드가 릴리스되었으므로 특정 분기를 삭제할 수 있습니다.

+0

그게 맞지만 구식 버전을 유지 관리하는 문제는 해결하지 못합니다. 브랜치를 지우면 태그를 변경해야합니다 (그런데 svn과 같은 개념입니다). –

2

은 기본적으로 두 개의 서로 다른 "트렁크 정책"이 있습니다 트렁크는 항상 해제 품질이어야한다 안정 트렁크 및 모든 개발이 재 통합 지점에서 발생하고 불안정 트렁크 활성 개발 트렁크에 발생, 방출 전에 안정화를 위해 분 지형이다.

트렁크 정책이 사용되는 관계없이 릴리스 된 버전은 항상 다시 통합되지 않는 분기 여야합니다.

불안정 트렁크 정책 (출시 전에 안정화 분지되어야 트렁크 활성 현상) 다음 예 :

개발 1.0 트렁크에 진행한다. 어떤 시점에서 1.X 분기가 만들어지고 코드가 안정화됩니다. 코드가 안정된 것으로 간주되면 1.0으로 태그가 지정되고 해제됩니다. 그 사이에 작업은 트렁크에서 버전 2를 위해 진행되며 곧 버전 2.X에서 분기됩니다.

버전 1.0에서 발견 된 버그는 1.X 분기에서 해결 될 수 있으며 버전 1.1은 버그 수정과 함께 해당 분기에서 해제 될 수 있습니다. 버그가 트렁크와 관련이 있으면 병합 할 수 있습니다. 그러나이 기능은 트렁크에서 제거되거나 다시 작성 될 수 있으므로이 버그 수정을 트렁크에 병합하거나 무의미하게 만들 수 있습니다. 버그가 버전 2의 베타 테스터에 의해 트렁크에서 발견 된 경우, 그곳에서 문제를 해결하고 나중에 1.X와 같은 오래된 유지 보수 지점에 버그가 있는지 확인한 다음 거기에 버그 픽스를 병합 할 수 있습니다. 그것은 두 가지 방식으로 작동합니다.

각 버전에 대한 분기보다 나은 정책이있을 수는 없습니다 (본 예제에서는 릴리스 별이 아닌 주요 버전 별 분기). 버전/릴리스 분기가없는 상황이 표시되지 않습니다. 트렁크에 재 통합되어야합니다.

+0

의견을 주셔서 감사합니다. –