모노 레포의 부분 공유


12

우리는 현재 git 서브 모듈 저장소를 포함하여 많은 SVN 및 Git 저장소 (각각 약 50 %)로 구성된 복잡하고 비효율적 인 빌드 시스템을 보유하고 있습니다. 또한 전체를 관리하는 수제 스크립트도 있습니다.
(폐쇄 소스) 코드베이스의 주요 요점은 밀접하게 연결되어 있으며 모든 프로젝트가 같은 버전에서 동시에 릴리스된다는 것입니다.

우리는 이것을 더 간단한 시스템과 단일 VCS로 마이그레이션하고 git 서브 모듈, google Repo 및 monorepos를 포함한 여러 옵션을 고려하고 있습니다. 최종 VCS는 아직 정의되지 않았으며 (권한을 가진 옵션은 제외) svn, git 또는 우리 상황에 더 잘 맞을 수있는 다른 것일 수 있습니다.

우리는 각 솔루션의 플러스와 마이너스를 나열하려고 노력하고 있으며 현재 monorepos와 관련된 주요 문제 중 하나는 외부 모듈과 쉽게 공유 할 수 없거나 일부 모듈을 공유하는 것이 불가능하다는 것입니다. 우리는 그 사람들이 해당 모듈에서 정상적으로 체크 아웃하고 작업 할 수 있기를 원하지만 나머지 리포지토리의 코드 나 기록에는 액세스 할 수 없게되기를 바랍니다. 그것은 우리가 현재 자주 또는 광범위하게하는 일이 아니지만, 앞으로 우리는 여기에서 나쁜 결정을했기 때문에 이것이 악몽이되는 것을 원하지 않습니다.

이러한 권한 관리 시스템이 VCS 시스템에 있습니까?
아니면이 문제를 완화시킬 수있는 방법이 있습니까?


Team Foundation Server 또는 서비스를 고려 하시겠습니까? Git을 지원하고 멋진 워크 플로우와 지속적인 통합 기능을 포함합니다
hanzolo

정확히 monorepo 구현을 고려하고 있습니까?
Dan Cornilescu

답변:


3

귀하의 설명에서, 여기 몇 가지 옵션이 있다고 생각합니다.

  1. GitHub (또는 다른 서비스)와 같은 서비스와 함께 git 하위 모듈을 사용하면 프로젝트 당 권한을 관리하고 배포 프로세스를 분리 할 수 ​​있습니다. 그러나 git 서브 모듈은 시간이 지남에 따라 큰 고통을 겪는다는 것을 들었습니다. 자식 서브 모듈을 완전히 다시 초기화 / 다시 다운로드하기위한 자동화 된 스크립트가 여기에 도움이 될 수 있습니다.
  2. 리포지토리를 독립적 인 서비스로 나누십시오. 이를 통해 동시에 개발할 수 있지만 서비스 검색, 여러 서비스 배포, 개발 환경, 지속적인 통합 / 배포 및 기타 모든 작은 즐거움에 대한 생각을 시작해야 할 때 많은 고통을 초래합니다. 마이크로 서비스 아키텍처.
  3. pip for Python, npm for Node.js, Maven for Java 등과 같은 공식 패키지 관리 시스템을 사용하십시오. 필요한 코드를 저장소에 배치하고 필요에 따라 기본 리포지토리에서 사용하십시오. 그들을 버전. 모듈과 기본 저장소 간의 연결에 따라 실제로 하위 레벨 모듈을 독립적으로 추출, 실행 또는 테스트하지 못할 수 있습니다. 그러나 가능 하다면 여러 저장소를 사용하여 겔을 잘 만드는 동시에 원격 저장소에서 패키지를 설치하여 빌드시 패키지를 통합 할 수 있습니다.

불행히도 이러한 옵션 중 어느 것도 완벽하지는 않지만 코드베이스의 상태에 따라 모두 유효합니다. 설명 3 옵션이 여기에서 가장 효과적 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.