Christopher 는 리포지토리 당 하나의 프로젝트 모델의 단점을 열거하는 데 매우 효과적이었습니다. 다중 저장소 접근 방식을 고려할 수있는 몇 가지 이유에 대해 이야기하고 싶습니다. 내가 작업 한 많은 환경에서 다중 저장소 접근 방식은 합리적인 해결책 이었지만 저장소 수와 절단 위치를 결정하는 것이 항상 쉬운 것은 아닙니다.
현재는 10 년이 넘는 역사를 가진 거대한 단일 리포지토리 CVS 리포지토리를 여러 git 리포지토리로 마이그레이션했습니다. 초기 결정 이후, 다른 팀의 조치를 통해 저장소 수가 증가하여 최적의 것보다 많은 것으로 생각합니다. 일부 신입 사원은 리포지토리 병합을 제안했지만 이에 반대했습니다. Wayland 프로젝트는 비슷한 경험을 가지고 있습니다. 내가 최근에 본 대화에서 한 시점에서 200 개가 넘는 git 저장소가 있었으며 그 결과 리드가 사과했습니다. 그들의 웹 사이트를 보면 , 나는 지금 그들이 5에 있다는 것을 알았습니다. 리포지토리 가입 및 분할은 관리 가능한 작업이므로 관찰해야합니다 (이유 내에서).
언제 여러 저장소를 원하십니까?
- 단일 저장소가 너무 커서 효율적이지 않습니다.
- 리포지토리가 느슨하게 연결되어 있거나 분리되어 있습니다.
- 개발자는 일반적으로 개발할 리포지토리 중 하나 또는 일부만 필요합니다.
- 일반적으로 리포지토리를 독립적으로 개발하고 가끔씩 만 동기화하면됩니다.
- 더 많은 모듈성을 장려하고 싶습니다.
- 다른 팀은 다른 리포지토리에서 작업합니다.
포인트 2와 3은 포인트 1이 유지되는 경우에만 중요합니다. 리포지토리를 분할함으로써 오프 사이트 동료가 겪는 지연을 크게 줄이고 디스크 소비를 줄이며 네트워크 트래픽을 개선했습니다.
4와 5가 더 미묘합니다. 클라이언트와 서버의 저장소를 분할하면 클라이언트와 서버 코드 간의 변경 사항을 조정하는 데 비용이 많이 듭니다. 이것은 둘 사이의 분리 된 인터페이스를 장려한다는 점에서 긍정적일 수 있습니다.
다중 리포지토리 프로젝트의 단점이 있더라도 웨이 랜드와 부스트가 떠 오릅니다. 모범 사례에 대한 합의가 아직 발전하지 않았다고 생각하며 일부 판단이 필요합니다. 여러 리포지토리 (git-subtree, git-submodule 및 기타) 작업을위한 도구는 계속 개발되고 실험 중입니다. 나의 조언은 실험적이고 실용적입니다.