主要观点:作者所在的微软大型 JavaScript 单体仓库 1JS 规模巨大,最近达到每月 1000 活跃用户、约 2500 个包和约 2000 万行代码,最近一次克隆达 178GB,但因规模过大存在问题,如欧洲部分人因大小无法克隆。
关键信息:
- 几年前加入仓库时就发现其在增长,使用
git-sizer工具发现大文件是因误提交二进制文件及未删除[Beachball 变更文件],导致单个文件夹文件过多产生大树对象, lesson1 是不要在单个文件夹存放数千个东西,采取了相关措施修复。 - 虽修复了 git 膨胀问题,但发现版本分支
versioned克隆越来越难,因 Linux Torvalds 提交的旧打包代码仅检查文件名最后 16 字符,导致比较不同包的CHANGELOG.md文件,多次推送整个文件,后通过新的git repack -adf --window=250和https://github.com/git-for-windows/git/pull/5171方法减少仓库大小,新配置选项git config --global pack.usePathWalk true可确保git push时生成正确的增量,Azure DevOps 也在努力减少服务器端仓库大小,这些变化将进入 git 上游。
重要细节: - 介绍了仓库的规模情况及相关工具和文件,如
git-sizer、[Beachball 变更文件]、CHANGELOG.md等。 - 详细说明了旧打包代码导致的问题及解决方法,包括新的
git repack命令和新的配置选项。 - 提及可使用
git survey命令查看各种新的启发式信息以了解路径遍历工作对仓库大小的影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。