Skip to content

本地 bare clone 的 LRU 清理,防止磁盘无限增长 #20

@yangflow

Description

@yangflow

问题

GitRelay 为每个仓库维护本地 bare clone,长时间运行后(尤其叠加 browse 批量添加 + Release 镜像),~/.local/share/gitrelay/ 会几十上百 GB。当前没有任何清理机制,用户只能手动 rm -rf 再重建。

建议改动

  • 设置项:cacheQuotaGB: Int?(nil = 无限,例如 50GB 表示 hard cap)
  • 每次成功同步后记录仓库的上次访问时间
  • 超限时按 LRU 淘汰:对最久未同步的仓库执行 git gc --aggressive --prune=now(先尝试瘦身),若仍超限则删除整个 bare clone(下次同步自动重建)
  • UI 显示当前占用与配额,提供"立即清理"按钮
  • 单仓库级"释放空间"选项

备选方案

  • 用户手动用 du / rm:不友好且危险
  • 按仓库数量 cap:粒度太粗,大仓 + 小仓一视同仁不合理

作用域检查

  • 与 GitRelay 的单向镜像模型兼容(删除后下次重建)
  • 不需要在 Keychain 以外存储凭证
  • 不引入新运行时依赖

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions