Flutter项目CI存储空间占用过高,Git依赖如何仅拉取指定目录?
解决方案
目前Pub工具原生不支持Git依赖的稀疏检出,默认会拉取完整仓库代码,你可以选择以下三种方案解决存储不足的问题:
方案1:拆分独立子仓库(最适合长期维护)
把Dart bindings相关的代码单独拆成一个独立的Git子仓库,直接在pubspec.yaml中依赖这个子仓库的Git地址即可,拉取时只会下载子仓库的内容,不会涉及体积庞大的C++主仓库代码。
方案2:手动执行Git稀疏检出(适合CI环境,无需调整仓库结构)
如果你暂时无法拆分仓库,可以在CI流程中先手动做稀疏检出拉取指定路径,再将依赖改为本地路径依赖:
- 第一步:执行稀疏检出,仅拉取需要的文件夹,同时开启浅克隆进一步压缩体积:
# 初始化空仓库 git init temp_repo cd temp_repo # 开启稀疏检出 git config core.sparseCheckout true # 配置需要拉取的路径 echo "path/to/the/folder/containing/dart/bindings/*" >> .git/info/sparse-checkout # 绑定远程仓库 git remote add origin my.git.repo.url # 浅拉取指定分支代码,仅拉最新1次提交 git pull origin main --depth=1 cd ..
- 第二步:修改pubspec.yaml中的依赖为路径依赖,指向刚才拉取的本地目录:
my_package_name: path: ./temp_repo/path/to/the/folder/containing/dart/bindings
- 第三步:正常执行
flutter pub get即可。
方案3:发布到内部私有Pub源(适合团队多人协作场景)
将Dart bindings包发布到团队内部的私有Pub源,直接通过版本号依赖该包即可,无需拉取任何Git仓库代码,拉取速度最快,也不存在冗余存储问题。
内容的提问来源于stack exchange,提问作者nishith Singh
相关产品推荐
相关产品推荐

