spark repo — 仓库管理
spark repo — 仓库管理
通过 registry 文件管理一个目录下的多个 GitHub 仓库,替代 submodule 管理。
命令速查
spark repo scan [folder-name] # 扫描目录并写入 registry_<folder>.yaml
spark repo list -f registry_<folder>.yaml # 列出 registry 中的仓库
spark repo clone -f registry_<folder>.yaml # 克隆 registry 中全部仓库
spark repo clone -r <name> -f registry_<folder>.yaml # 仅克隆指定仓库
spark repo scan
递归扫描目录,发现带 origin 远程的 Git 仓库,写入当前目录下的 registry_<folder>.yaml。
spark repo scan # 扫描当前目录
spark repo scan ~/workspace/innate-apps # 扫描指定目录
流程:递归查找 .git(含 .git 文件)→ 解析 origin 远程 URL → 归一化 → 与已有 registry 合并 → 写入 registry_<folder>.yaml
扫描时会跳过隐藏目录以及 node_modules/venv/.venv/__pycache__/dist/build。SSH URL 会归一化为 HTTPS 形式存储。重复扫描会保留已有的 name/desc,并清理目录已不存在的旧条目。
spark repo clone
从 registry 文件克隆仓库到 folder 目录。目标目录名由 registry 文件名推导(registry_<folder>.yaml → <folder>)。
| 标志 | 简写 | 默认值 | 说明 |
|---|---|---|---|
-r, --repo |
仅克隆指定名称的仓库 | ||
-f, --file |
registry 文件(必填) |
# 克隆 registry 中全部仓库到 innate-apps 目录
spark repo clone -f registry_innate-apps.yaml
# 仅克隆指定仓库
spark repo clone -r spark-cli -f registry_innate-apps.yaml
已存在的仓库(.git 或目录已存在)会被跳过,结束时打印 cloned / skipped / failed 统计。
spark repo list
列出 registry 文件中的仓库。
| 标志 | 简写 | 默认值 | 说明 |
|---|---|---|---|
-f, --file |
registry 文件(必填) |
spark repo list -f registry_innate-apps.yaml
每行输出 name<TAB>repo<TAB>path。
registry 文件
# Project registry
# Synced by spark repo scan
projects:
- name: spark-cli
repo: https://github.com/variableway/spark-cli.git
path: tooling/spark-cli
desc: Spark CLI 工具