3

내 프로젝트 (우리는 TFS 사용)에 대해 분기 & 병합 전략을 설계하고 있습니다. 프로젝트는 여러 개의 릴리스 버전을 가질 계획입니다. 현재 우리는 v1.0alpha을 테스트하고 2.0에서 작업프로젝트의 여러 릴리스 버전에 대한 Gitflow 전략

계획은 다음과 같습니다

  • 는 테스터 임박 녹색 빛 후, 버전은 V1.0는 하나의 클라이언트에 발표 될 예정이다. (이미 DEV에서)
  • 버전 1.1 5-6 클라이언트 클라이언트의 수십에 설치 될
  • 버전 1.2에 배포됩니다.

우리는 클라이언트 업그레이드하기위한 개월 (년?)이 될 수 프로젝트 및 시장의 특성 최신 버전에 있지만 인해 기존 고객의 업그레이드를 강제로하려고합니다.

표준 gitflow를 사용하고 싶지만 단일 버전을 사용하는 것이 더 적합합니다. 나는 gitflow의 단순화를 디자인했다 : Git Flow simplification

접근 방식은 다음과 같습니다 클라이언트가 버그가 수정하고자

  • 경우, 우리는 그의 버전의 릴리스 지점에서 문제를 해결하고 그는로 업그레이드 할 수있다 그의 버전의 최신 개정판. 예를 들어 버그가있는 v1.0의 클라이언트는 v1.0.5로 업그레이드해야합니다. 다른 버전에서 버그가 발생하면 수정 될 것입니다.
  • 클라이언트가 새로운 기능을 원할 경우 최신 버전으로 개발하고 원하는 경우 업그레이드하도록합니다. 예를 들어, v1.0.5의 새 버전을 원하는 클라이언트는 v1.2로 업그레이드해야합니다.
  • 주어진 버전의 모든 클라이언트를 업그레이드하면 해당 릴리스 분기가 삭제됩니다. 예를 들어, v1.0의 클라이언트가 업그레이드 될 때 우리는 v1.0 릴리스 브랜치를 버릴 것입니다.

그래서 중요한 순서 내 질문은 :

  1. 내 접근 사용할 수 있습니까? 당신이 볼 수있는 모든 문제?
  2. "복수 버전 시나리오"에 대해 git-flow에 어떤 패턴이 있습니까?
  3. Gitflow에는 마스터 브랜치가 있습니다. Master Branch가 없어도 괜찮습니까? 우리는 서로 다른 릴리스 브랜치를 "마스터"로 간주 할 수 있습니까?
  4. Dev 및 Release 지점의 이름을 어떻게 지정 하시겠습니까?

답변

4
  1. 접근 방법이 효과적입니다. GitFlow에는 마법 같은 것도 없으며 필요에 맞는 변형도 좋습니다. 힘내 자체는 다른 워크 플로우에는 아무런 문제가 없다. 좋은 예가 Github flow입니다. http://scottchacon.com/2011/08/31/github-flow.html을보십시오. 당신이 고려할 수

몇 가지 :

A) "원리 적어도 서프라이즈의"당신이 할 수있는 표준에 가깝게 유지하십시오.즉, i) 모든 것을 작성하는 대신 웹상에서 사용 가능한 문서를 가리키는 개발자를 가리킨다. ii) 새로운 개발자가 프로젝트에 쉽게 참여할 수 있도록한다. 따라서 마스터 브랜치는 필요하기 때문에가 아니라, 사람들이 존재하지 않을 때 혼란 스럽기 때문에 마스터 브랜치를 유지해야합니다. 앞으로 몇 년 동안 설명해야 할 것입니다. git의 브랜치는 "그냥"이름입니다 (글쎄, 조금 더 많지만 내 의미를 갖습니다). 그래서 같은 이름을 붙이는 유일한 이유는 관습입니다. 사람들이 쉽게 사용할 수 있습니다.

b) 프로젝트에 몇 명의 개발자가 참여하고 있습니까? 많은 경우 Dev 브랜치를 통합 브랜치로 간주하고 마스터 브랜치를 안정적인 브랜치로 사용할 수 있습니다. dev 브랜치를 불안정하게 만들면 많은 개발자가 많은 문제를 해결할 수 있습니다. 기능과 핫픽스에서 각각 하나씩 두 개의 팀이 만들어지며 빌드가 빨간색으로 바뀌고 팀이 서로를 비난하며 세 번째 팀은 새로운 릴리스 지점을 얻으려고 시도하지만 할 수 없습니다. 풀 요청을 사용하여 보호 할 수있는 안정적인 항상 녹색 빌드 마스터 브랜치를 갖는 것은 매우 좋으며보다 편안한 환경을 만듭니다.

2) 기본 Gitflow는 릴리스를 중심으로하므로 그리 바람직하지 않습니다. 동시에 여러 릴리스가 있습니다. 그래서 거의 다 왔지만 [Jakob Ehn 's] (https://github.com/jakobehn) Gitflow extention to Visual Studio과 같은 표준 도구는 새로운 기능을 제공하기 전에 릴리스를 닫으려고합니다. Jakob에게 휴식을 요청하면 툴이 도움이 될 것입니다. 그렇지 않으면 컨벤션을 따르되 수동으로 실행하십시오.

3) 위의 1 번에서 마스터에 대한 정보를 얻지 못했고 왜 사용하지 않는 것이 좋은지는 알 수 없습니다. 물론 릴리스 브랜치를 마스터의 일종으로 간주 할 수는 있지만, 실제로는 사용자의 설명에서 그런 방식으로 작동하지 않습니다. 그리고 만약 그렇다면, 어느 것이 진정한 주인입니까? 당신이 만드는 지부는 당신에게서, 그리고 당신은 최신 지부로 간주됩니다. 안정된 마스터를 가짐으로써 많은 질문을 해결할 수 있습니다.

4) Dev 또는 Develop을 선택하면 Dev/NewHelpPage 또는 Feature/NewHelpPage (가능한 한 gitflow 규칙에 가깝도록)와 같은 기능의 이름이 있어야합니다. 릴리스 브랜치, 그것은 의미 론적 버전 관리 (http://semver.org) 원칙을 따르는 것처럼 보이므로, 다음과 같이 사용하십시오. Release/V1.0, Release/V1.1 등. 핫픽스 지점은 Release/V1.0.1입니다.
데브가 쉽게 무엇인지 이해할 수 있도록 이름을 지정하십시오. 가능하면 주변 사람에게 질문 할 필요가 없습니다.

가능한 한 관습을 따르고 운동하기 쉽습니다. 힘내 자체는 거의 모든 분기 방식에 사용할 수 있습니다.

[편집] Jakob과 간단한 대화를 나눴고, 그는 지원 부서를 지원하겠다는 요청을 받았다고 말했습니다. 그는 또한 다른 gitflow 시나리오에서 this excellent post을 가리켰습니다. 하단에는 support-branches에 대한 흐름이 있습니다.

+0

답변 해 주셔서 감사합니다 .-) –

관련 문제