How we shrunk our Javascript monorepo git size by 94%
Jonathan Creamer
Microsoft 내부에서 1JS라고 부르는 엄청나게 큰 자바스크립트 모노 레포가 있다고 합니다. 이 모노 레포에는 2,500개의 패키지가 있고 코드 라인도 2,000만 라인이 넘어서면서 최근의 클론은 178GB나 되었습니다.
용량이 점점 커지면서 생산성에 문제가 되었기 때문에 너무 큰 파일을 올리거나 하는 등의 문제를 막기 위해서 여러 가지 방법을 시도해서 저장소가 커지는 속도는 느려졌지만 계속 커지고 있었다고 합니다. 그러던 중 Microsoft에서 가장 큰 모노레포인 Office보다도 커지가 뭔가 잘못되었다는 생각이 들었습니다.
내부에 Git에 기여하던 사람도 있어서 문제를 자세히 찾아본 결과 git에서 패킹할 때 파일명의 마지막 16자만 검사하기 로직으로 인해서 CHANGELOG.md 등 어디나 있을 만한 파일의 diff를 검사하면서 사실상 다른 파일과의 diff를 엄청나게 많이 만들고 있다는 것을 발견하고 git windows에 이를 수정해는 패치를 올리게 됩니다.
이 수정사항을 적용한 뒤에 git repack을 하자 178GB가 5GB로 줄어들었다고 합니다.
https://www.jonathancreamer.com/how-we-shrunk-our-git-repo-size-by-94-percent/
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 11월 10일 오전 4:26