개인 프로젝트에 DVCS를 사용하고 좋아하지만 다른 프로젝트에서 프로젝트에 대한 기여를 쉽게 관리하는 방법을 완전히 볼 수 있지만 (예 : 일반적인 Github 시나리오) "전통적인"팀의 경우 문제가있을 수 있습니다. TFS, Perforce 등의 솔루션에 의해 사용되는 중앙 집중식 접근 방식 ( "전통")은 사무실에서 한 사람이 소유하지 않은 한 프로젝트에서 작업하는 모든 개발자가 같은 코드를 사용하는 것을 의미합니다.
내가 직접 본 두 가지 문제가 있지만 다른 고려 사항을 들으십시오.
기존 시스템에서 서버에 대한 변경 사항을 확인하려고 할 때 다른 사람이 충돌하는 변경 사항을 이전에 체크인 한 경우이를 체크인하기 전에 병합해야합니다. DVCS 모델에서 각 개발자는 로컬로 변경하고 어떤 시점에서 다른 저장소로 푸시합니다. 해당 리포지토리에는 해당 파일의 분기가 있으며 2 명이 변경되었습니다. 이제는 그러한 상황을 처리 할 책임이있는 사람이있는 것 같습니다. 팀의 지정된 사람은 모든 충돌을 병합 할 수있는 전체 코드베이스에 대한 지식이 충분하지 않을 수 있습니다. 이제 누군가 개발자 중 한 명에게 접근하여 병합을 수행 한 다음 다시 푸시하도록 추가 단계를 추가했습니다 (또는 해당 작업을 자동화하는 인프라를 구축해야 함).
또한 DVCS는 로컬에서 작업하는 것이 매우 편리해지기 때문에 개발자가 푸시하기 전에 로컬 리포지토리에 약간의 변경 사항을 누적하여 이러한 충돌을보다 일반적이고 복잡하게 만들 수 있습니다.
분명히 팀의 모든 사람이 코드의 다른 영역에서만 작동한다면 문제가되지 않습니다. 그러나 모든 사람이 동일한 코드를 사용하는 경우가 궁금합니다. 중앙 집중식 모델 세력이 신속하고 빈번하게 처리되는 것처럼 보이며, 대규모의 고통스러운 합병을 수행하거나 누군가가 주요 리포지토리를 "경찰"해야 할 필요성을 최소화합니다.
따라서 사무실에서 팀과 함께 DVCS를 사용하는 사람들은 그러한 사례를 어떻게 처리합니까? 일일 (또는 주당) 워크 플로가 부정적인 영향을 받습니까? 직장에서 DVCS를 추천하기 전에 알아야 할 다른 사항이 있습니까?