feat(cli): nerve init --from <git-url> — clone existing workspace #72

Closed
opened 2026-04-23 10:47:51 +00:00 by xiaoju · 0 comments
Owner

背景

nerve init 目前只能创建全新 workspace。但实际使用中,workspace(senses、workflows、nerve.yaml)是用户长期维护的,存在 git repo 里。每次重装或换机器都要手动恢复。

需求

nerve init --from <git-url>

  1. git clone <url> ~/.uncaged-nerve(如果目标目录已存在且非空,报错退出)
  2. 在 clone 下来的目录中运行 pnpm install(安装 nerve-daemon 等依赖)
  3. 打印成功信息,提示用户 nerve start

行为细节

  • --from 和默认的 scaffold 模式互斥,不能同时指定
  • 如果 ~/.uncaged-nerve 已存在且非空,提示用户先备份/删除
  • clone 后检查必要文件(nerve.yamlpackage.json)是否存在,缺失则警告
  • 支持 HTTPS 和 SSH URL
  • 如果用户传的是 bare repo name(如 xiaoju/nerve-workspace),不做自动补全,要求完整 URL

示例

# 从 git repo 恢复 workspace
nerve init --from https://git.shazhou.work/xiaoju/nerve-workspace.git

# 然后启动
nerve start

不做

  • 不处理 data/ 目录(SQLite 数据是本地的,不进 git)
  • 不自动 commit/push(那是后续 workspace sync 的事)
## 背景 `nerve init` 目前只能创建全新 workspace。但实际使用中,workspace(senses、workflows、nerve.yaml)是用户长期维护的,存在 git repo 里。每次重装或换机器都要手动恢复。 ## 需求 ### `nerve init --from <git-url>` 1. `git clone <url> ~/.uncaged-nerve`(如果目标目录已存在且非空,报错退出) 2. 在 clone 下来的目录中运行 `pnpm install`(安装 nerve-daemon 等依赖) 3. 打印成功信息,提示用户 `nerve start` ### 行为细节 - `--from` 和默认的 scaffold 模式互斥,不能同时指定 - 如果 `~/.uncaged-nerve` 已存在且非空,提示用户先备份/删除 - clone 后检查必要文件(`nerve.yaml`、`package.json`)是否存在,缺失则警告 - 支持 HTTPS 和 SSH URL - 如果用户传的是 bare repo name(如 `xiaoju/nerve-workspace`),不做自动补全,要求完整 URL ### 示例 ```bash # 从 git repo 恢复 workspace nerve init --from https://git.shazhou.work/xiaoju/nerve-workspace.git # 然后启动 nerve start ``` ## 不做 - 不处理 data/ 目录(SQLite 数据是本地的,不进 git) - 不自动 commit/push(那是后续 workspace sync 的事)
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#72