5P by xguru 2020-05-11 | favorite | 댓글 1개

- 페이스북의 자체 버전 관리 툴. Mercurial 기반으로 작성했지만 자신들에 맞게 확장.
- 3개의 컴포넌트로 구성
ㅤ→ eden : CLI도구. 윈/맥/리눅스
ㅤ→ Mononoke : 분산형이 아닌 SCM서버. 거대 Repo를 지원하기 위해 체크아웃시 전체가 아닌 일부만 다운로드하고 필요할때 추가 다운로드. 리눅스 온리. Rust Cargo 지원예정
ㅤ→ EdenFS : 체크아웃을 관리하기 위한 가상 파일 시스템. 거대 Repo에서 빠르게 체크아웃 하기 위해 사용. Sparse Checkout 과 비슷하지만 별도 리스트 관리 필요 없어서 사용자에게 훨씬 편리한 방식. Watchman과도 연동. 리눅스/맥/윈도우
- 페이스북의 거대한 Monorepo 코드베이스를 지원하기 위해서 만든거라 페이스북 외부지원은 아직 실험중.

* MS 는 Git을 확장한 VFS for Git https://vfsforgit.org/
* Google 은 Piper https://cacm.acm.org/magazines/2016/…
* 페이스북이 Mercurial 기반을 선택한 이유 https://engineering.fb.com/core-data/scaling-mercurial-at-facebook/

윈도우/구글/페북 모두 초대형 Monorepo 라서, 그 시절(2010년대 초반)의 Git은 적절하지 않으니 자신들의 길을 간거라고 보면 될 듯.
ㅤ→ 구글이 2016년 기준 86TB, 20억 라인, 9백만개의 소스코드 파일에 3500만개의 커밋
ㅤ→ 페이스북이 2013년 기준 1700만 라인에, 44000개의 소스코드 파일

지금은 Git 도 2.25 부터 Sparse Checkout 을 지원하긴 하지만 아직 초기단계라고 볼수 있으니까요.
Git 2.25 릴리즈 - 주요 변경 사항들 https://news.hada.io/topic?id=1309