2011-12-19 3 views
1

우리는 CVCS (TFS)에서 DVCS (Hg) 로의 업그레이드의 일부로 릴리스 관리를위한 워크 플로우를 변경하려고합니다. 여기 사무실에서 꽤 강렬한 토론이 있었고 그것에 관해 의견을 듣게되어 기쁩니다.두 개의 다른 릴리스주기를 가진 Hg 워크 플로우

오래 살았 제품에 어떤 배경

우리는 작은/중소 소프트웨어 기업 (약. 25 개발자)입니다. 우리는 릴리스주기를 낮게 유지하려고 노력합니다 - 각 스프린트 후 릴리스 (~ 한 달에 한 번). TFS에서는 새로운 각 릴리스에 대한 분기를 만듭니다. 마지막 두 릴리스는 버그 수정을 지원합니다.

우리의 현재 브랜치 모델 (TFS)이 지점의 상단에

--trunk 
    --release200 //and older, not supported anymore 
    --release201 
    --release202 

(필요한 경우) 우리는 다른 개발자 가지가 있습니다. 일부 팀 지부와 일부 지부가 있습니다.

"작은"버그는 release202에서 수정되고 트렁크에 병합됩니다. 중요한 버그는 release201에서 수정되어 릴리스 202 및 트렁크로 병합됩니다.

우리가 지원하지 않는 것은 이전 릴리스의 버그 수정입니다. 일부 고객은 새로운 기능에 대한 것을 많이 걱정하지 않는다

새로운 워크 플로우, 대신 그들은보다 안정적인 버전을합니다. 따라서 우리는 두 개의 트랙을 제공하는 것에 대해 생각하고 있습니다. 하나는 오래 지속 된 패치이고 다른 하나는 기능을 자주 업데이트합니다. 우리는이 같은 필요 나뭇 가지에 대해 생각을 해 봤는데 ...

(수은)

--default 
    --RC 
    --Release 
    --StableRelease200 
    --StableRelease210 

이 중앙 수은 저장소 내부의 모든 명명 된 지점이다. 각 지점은 CI 시스템에 연결됩니다. 개발자 관점에서이 질문의 범위를 벗어나는 지점 (hg 클론)을 개발할 것입니다.

일부 고객은 Release의 릴리스를 사용하고 일부는 StableReleaseX를 사용합니다.

기본값 : 모든 새 기능 개발이이 분기에 병합됩니다.

RC : PBI가 완료되거나 스프린트가 끝나면 기본값이 내부 테스트를 위해이 분기에 병합됩니다. 이 지점에서 발견 된 버그도 여기서 수정되었습니다. QA가 충분히 안정적이라고 생각하면이 지점이 출시로 병합됩니다. 일부 개발자는 계속해서 새로운 기능을 수행해야하는 경우 기본적으로이 기능을 사용할 수 있습니다.

출시 : 여기에서 릴리스는 순차적으로 발생하며, 마지막 릴리스에서만 버그 수정이 지원됩니다. 기술적 측면에서 볼 때 출시는 Hg 태그로 표시됩니다. 스프린트 중 고객 사이트에서 발견 된 중요한 버그는 여기에서 수정되어 다시 기본값으로 병합됩니다.

StableReleases : 반년마다 (경영진에 의해 결정됨) 릴리스가 새로운 StableRelease 분기로 병합됩니다. 수명 동안 새로운 기능은 여기에 추가되지 않습니다. 여기에서 발견 된 버그는 여기에서 고쳐지고 기본으로 되돌아갑니다.아마도 두 개의 StableRelease가 동시에 지원 될 것입니다 - 현재 1과 2 번째. 이전 지점은 폐쇄됩니다.

몇 가지 질문 워크 플로우에 대한

  • 일반 의견? 서로 다른 두 개의 동시 "릴리스 트랙"을 지원 한 경험이 있습니까? 하나는 자주 출시되는 버전이고 하나는 버그 수정이 포함 된 수명이 긴 버전입니다.
  • 우리는 브랜치를 브랜치 (branch)로 생각하여 개발자 (하나의 VS, 하나의 풀 등)가 더 쉽게 사용할 수 있도록했습니다. 아니면 ... 더 힘들다고 생각하니? 대신에 별도의 복제본을 사용하는 것이 더 쉽습니다 (대부분의 개발자는 DVCS 사용 경험이 제한적입니까?).

답변

1

Mercurial wiki의 wiki page on "standard" branching을 참조하십시오. 당신이 제시 한 워크 플로우와 매우 유사한 워크 플로우를 설명한다는 점을 기쁜 마음으로 알게 될 것입니다! :-) 그래, 그래,이 두 릴리스 트랙을 가지고 아주 잘 작동합니다.

클론 대신 명명 된 분기를 사용하는 경우 Mercurial 프로젝트에서 사용하는 두 개의 분기에 매우 만족합니다. 이전에는 두 개의 저장소가 있었지만 이제는 defaultstable 분기가 있습니다.

일부 사용자가 서버에서 별도의 복제본을 선호하는 이유는 더 나은 개요를 제공 할 수 있기 때문에 "분기"가 별도의 리포지토리로 표시되기 때문입니다.

+0

링크 정보 ... 예, 여러 버전을 지원하는 방법을 잘 설명합니다. 우리는 또한 어떤 고객에게 더 자주 공개 할 수있는 가능성을 원하지만 어쨌든 - 그 링크는 좋은 의견을 제공합니다. 명명 된 브랜치와 클론에 관해서 ... 여러분이 작성한대로 많은 지사 (3 + noOfStableReleases가 있음)에 대한 우려는 "개요"를 좀 더 복잡하게 만듭니다. 감사합니다. – Roger

+0

크론 (cronjob) 또는 유사품과 같이 동기화하려면 서버 쪽에서도 복제본을 만들 수 있습니다. 우리는 Mercurial에 대해서도 그렇게합니다 : http://selenic.com/repo/hg 및 http://www.selenic.com/repo/hg-stable –

+0

예. 명명 된 지점으로 시작할 것입니다. 입력 해 주셔서 감사합니다. – Roger

관련 문제