问题
有些仓库(monorepo、游戏资产库、ML 模型库)完整历史达数 GB,镜像全量历史既占磁盘也拖慢首次同步。用户可能只关心最近 N 个提交,或只关心 main 分支 + 语义化 tag,却没有开关控制。
建议改动
RepoConfig 增加字段:
depth: Int?(nil = 全量,>0 = 浅克隆深度)
refSpecs: [String](默认 ["+refs/heads/*:refs/heads/*", "+refs/tags/*:refs/tags/*"],用户可自定义如 ["+refs/heads/main:refs/heads/main", "+refs/tags/v*:refs/tags/v*"])
- 同步逻辑用
git fetch --depth=N 与自定义 refspec
- UI 在
AddEditRepoSheet 的"高级选项"折叠区暴露这两项
- 警告:浅克隆不支持完整
git push --mirror; 此模式下退化为"sync only selected refs",并明确标注不是完整备份
备选方案
- 始终全量:当前行为,对大仓库不友好
- 第一次全量之后增量:git 默认就是增量,不能解决"首次就太大"
作用域检查
问题
有些仓库(monorepo、游戏资产库、ML 模型库)完整历史达数 GB,镜像全量历史既占磁盘也拖慢首次同步。用户可能只关心最近 N 个提交,或只关心
main分支 + 语义化 tag,却没有开关控制。建议改动
RepoConfig增加字段:depth: Int?(nil = 全量,>0 = 浅克隆深度)refSpecs: [String](默认["+refs/heads/*:refs/heads/*", "+refs/tags/*:refs/tags/*"],用户可自定义如["+refs/heads/main:refs/heads/main", "+refs/tags/v*:refs/tags/v*"])git fetch --depth=N与自定义 refspecAddEditRepoSheet的"高级选项"折叠区暴露这两项git push --mirror; 此模式下退化为"sync only selected refs",并明确标注不是完整备份备选方案
作用域检查