문제
나는 약 10 명의 개발자가있는 소프트웨어 프로젝트에 있으며 Mercurial을 통해 소스 코드를 공유합니다. 릴리스 당 개발 및 생산 지점이 있습니다. 프로젝트를 진행하는 동안 반복적으로 우리는 하나의 브랜치 (예 : v1)의 소스 코드를 이전 릴리스의 소프트웨어 즉 v2의 패치 및 유지 보수 브랜치로 가져 왔습니다.
이로 인해 코드가 잘못된 분기로 이동 한 것을 알 수없는 경우 잘못된 커밋을 백업하는 데 걸린 시간 또는 잘못된 (QAd 이외의) 코드에 도달하여 잘못된 분기에 배포되는 시간이 발생합니다.
지점 및 병합 디자인 / 방법
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
따라서 릴리스 개발 브랜치에서 작업 할 준비가 될 때까지 모든 릴리스 및 유지 관리가 수행되는 단일 테스트 / UAT / 생산 브랜치로 분기합니다. 태그는이 브랜치의 릴리스를 빌드하는 데 사용됩니다. v1이 테스트되는 동안 v2에 대한 브랜치가 작성되었으며 개발자는 새로운 기능에 대한 작업을 시작합니다.
발생하는 경향은 개발자가 v2-dev 분기로 인해 v1-dev 또는 v1-prod로 작업을 커밋하거나 더 나쁜 경우 v2-dev를 v1-prod (또는 이와 유사한 실수)로 병합하는 것입니다.
우리는 대부분의 개발자들에게 -prod 브랜치 에 액세스하지 말라고 지시 하지만, 코드는 여전히 몰래 들어온다.
v2가 개발을 시작한 동안 문제를 해결하기 위해 v1에 아직 상당히 많은 패치가있을 수 있습니다. 즉 v1은 홀수 작은 패치를 얻지 못할 수도 있습니다.
우리가 지금까지 시도한 것
- 게이트 키퍼와 함께 별도의 제품 분기가 있습니다. -prod 브랜치는 이름을 통해 경고를 발생시켜야하며 대부분의 개발자는 해당 브랜치에있을 필요가 없습니다. 이것은 실제로 문제를 감소시키지 않았습니다.
- 개발자들 사이에서이 문제에 대한 인식을 제고하여 더욱주의를 기울 이도록 노력하십시오. 다시 이것은 매우 성공적이지 않았습니다.
개발자가 잘못된 지점에 커밋하는 가능한 이유
- 분기 설계가 너무 복잡
- 여러 지점에서 병렬로 활발한 개발. (이 프로젝트는 눈사태 모델 사용의 증상을 나타냅니다 .)
- 개발자는 DVCS를 충분히 이해하지 못합니다
내가 읽은 질문은 다소 관련이 있습니다.
잘못된 지점에 커밋하지 않는 것에 대한 이 질문 을 읽었으며 시각적 단서에 대한 답변이 도움이 될 수 있다고 생각합니다. 그러나 우리가 겪고있는 문제가 더 근본적인 문제의 증상이 아니라고 확신합니다.
시각적 단서를 사용하면 명령 줄에 쉽게 넣을 수 있지만 팀의 절반 정도가 식을 사용하여 시각적 단서를 통합하는 방법을 잘 모르겠습니다.
질문
소프트웨어, 프로젝트 관리 또는 거버넌스 형태로 시간이 걸리거나 배포 된 코드를 더럽히는 잘못된 브랜치에 대한 커밋을 줄이기 위해 어떤 방법을 사용할 수 있습니까?
위에 설명 된대로 기여한 것으로 생각되는 이유에 대한 구체적인 의견을 주시면 회신을 제한하지 않습니다.