SalvageOfSDK

厂商以 .tar.gz 分发的大型嵌入式 SDK,没有版本历史、没有 repo 链路。把它恢复成由几十到上百个子仓库组成、可 repo sync 一键拉取、且编出的镜像能正常启动的 SDK —— 这件事我在两代 SOC 上各做了一轮。

  • 第一次迭代(2025) — RV1126B / RK3568。原版 SDK,repo 清单完好。Python 脚本解析清单 + GitLab API 批量建仓,重点是把流程改造落到团队。
  • 第二次迭代(2026) — RK3576。厂商深度定制,repo 链路已被销毁。Bash 工具链靠 find -name .git 自动推导出 58 个仓库,重点是无清单前提下的取证式重建。

迭代对比

graph LR
    A["2025 年<br>RV1126B 与 RK3568<br>Python 脚本<br>项目列表硬编码"] --> B["2026 年<br>RK3576<br>Bash 工具链<br>find .git 自动推导"]
    B --> C["下一版<br>规则库化<br>判断可复用"]
维度20252026下一版
语言PythonBash待定
项目列表来源手工解析清单后硬编码find -name .git 自动推导同 2026
适用场景清单完好的原版 SDK原版 + 清单被毁的定制 SDK同 2026
校验覆盖率脚本6 项自动断言 + 只读基线同 2026
.gitignore 判断逐个手工逐个手工规则库,按上游项目名索引
换 SOC 的成本重抄项目列表重新判断所有 .gitignore只判断没见过的项目
第一次迭代(2025):从单体巨石到 repo 多仓库协同

该项目将一个以离线压缩包形式分发的、庞大的单体代码库,成功重构并迁移至内部 GitLab 服务器,建立了一套基于 Google `repo` 工具的模块化、多仓库(multi-repository)协同开发体系。

第二次迭代(2026):把没有 repo 链路的厂商 SDK 恢复成 N 个 Git 子仓库

把一份被开发板厂商深度定制、repo 链路已损坏的 SDK 压缩包,恢复成可一键拉取、可正确编译、且镜像能正常运行的多仓库 SDK。