Skip to content

镜像 GitHub/GitLab Releases 及其二进制 assets #12

@yangflow

Description

@yangflow

问题

很多团队真正宝贵的不是 git 对象,而是 Release 里附带的 artifacts(.dmg / .tar.gz / 预训练模型权重 / Docker 镜像 tarball)。这些文件不存在 git 仓库里,当前即使镜像了 git 仓库本身,Release 资产也会丢失; 源 repo 一旦被 archive/删,资产即灭。

建议改动

  • RepoConfigmirrorReleases: Bool 开关
  • 新增 ReleaseMirrorService:
    1. 调 source provider 的 /releases 列表,与 target provider 的 /releases 做 diff
    2. 缺失的 release:在 target 创建同 tag / title / body 的 release
    3. 逐个下载 source asset(stream),上传到 target 的 assets 端点(GitHub 需两步:create asset upload URL + PUT 到 URL)
  • 支持断点续传(记录已完成 asset 名单,避免大文件失败重头再来)
  • UI 在 RepoDetailView 新增 "Releases" tab,展示同步状态

备选方案

  • 只导出 release metadata(JSON)不传资产:覆盖不到核心痛点
  • 依赖用户自己脚本:门槛高且散落各处

作用域检查

  • 与 GitRelay 的单向镜像模型兼容(releases 是 dst 的增量数据)
  • 不需要在 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