clawt 2.10.0 → 2.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agent-memory/docs-sync-updater/MEMORY.md +9 -6
- package/.claude/agents/docs-sync-updater.md +11 -0
- package/README.md +63 -290
- package/dist/index.js +203 -104
- package/dist/postinstall.js +242 -0
- package/docs/spec.md +27 -14
- package/package.json +1 -1
- package/src/commands/remove.ts +21 -28
- package/src/constants/index.ts +1 -1
- package/src/constants/messages/common.ts +41 -0
- package/src/constants/messages/config.ts +5 -0
- package/src/constants/messages/create.ts +5 -0
- package/src/constants/messages/index.ts +29 -0
- package/src/constants/messages/merge.ts +42 -0
- package/src/constants/messages/remove.ts +15 -0
- package/src/constants/messages/reset.ts +7 -0
- package/src/constants/messages/resume.ts +12 -0
- package/src/constants/messages/run.ts +16 -0
- package/src/constants/messages/status.ts +25 -0
- package/src/constants/messages/sync.ts +24 -0
- package/src/constants/messages/validate.ts +25 -0
- package/src/utils/index.ts +2 -2
- package/src/utils/worktree-matcher.ts +92 -0
- package/tests/unit/commands/config.test.ts +110 -0
- package/tests/unit/commands/create.test.ts +115 -0
- package/tests/unit/commands/list.test.ts +118 -0
- package/tests/unit/commands/merge.test.ts +323 -0
- package/tests/unit/commands/remove.test.ts +240 -0
- package/tests/unit/commands/reset.test.ts +124 -0
- package/tests/unit/commands/resume.test.ts +91 -0
- package/tests/unit/commands/run.test.ts +207 -0
- package/tests/unit/commands/status.test.ts +214 -0
- package/tests/unit/commands/sync.test.ts +208 -0
- package/tests/unit/commands/validate.test.ts +382 -0
- package/tests/unit/constants/messages.test.ts +1 -1
- package/tests/unit/utils/config.test.ts +21 -1
- package/tests/unit/utils/formatter.test.ts +44 -1
- package/tests/unit/utils/git.test.ts +44 -0
- package/tests/unit/utils/validate-snapshot.test.ts +25 -0
- package/tests/unit/utils/worktree-matcher.test.ts +81 -5
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
- merge 成功消息根据 `autoPullPush` 配置动态显示推送状态
|
|
32
32
|
- run 的中断清理在所有子进程退出后执行
|
|
33
33
|
- run 交互式模式在创建 worktree 前检测分支是否已存在,已存在则提示使用 resume
|
|
34
|
-
- remove
|
|
34
|
+
- remove 命令通过 `resolveTargetWorktrees` 支持模糊匹配+多选(-b 可选),删除 worktree 时自动清理对应快照,`--all` 模式额外清理项目快照目录
|
|
35
35
|
- remove 批量操作时收集错误继续处理,最后汇总报告
|
|
36
36
|
- 文档中文风格,技术术语保留英文(worktree, merge, branch, SIGINT 等)
|
|
37
37
|
- cleanupWorktrees 是 merge 和 run 共用的公共清理函数(在 src/utils/worktree.ts)
|
|
@@ -70,11 +70,14 @@ Notes:
|
|
|
70
70
|
- resume 和 run(交互式模式)共用 `launchInteractiveClaude()`,该函数从 run.ts 提取到 src/utils/claude.ts
|
|
71
71
|
- `claudeCodeCommand` 配置项同时影响 run 交互式模式和 resume 命令
|
|
72
72
|
- reset 命令与 validate --clean 的区别:reset 不删除快照文件,validate --clean 会删除快照
|
|
73
|
-
- `resolveTargetWorktree()` 是 resume、validate、merge 和 sync
|
|
74
|
-
- `
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- validate
|
|
73
|
+
- `resolveTargetWorktree()` 是 resume、validate、merge 和 sync 共用的单选分支匹配函数(在 src/utils/worktree-matcher.ts)
|
|
74
|
+
- `resolveTargetWorktrees()` 是多选分支匹配函数(在 src/utils/worktree-matcher.ts),目前被 remove 命令使用
|
|
75
|
+
- `WorktreeResolveMessages` 接口用于单选命令的消息解耦,`WorktreeMultiResolveMessages` 接口用于多选命令的消息解耦
|
|
76
|
+
- `promptSelectBranch()`(Enquirer.Select)用于单选交互,`promptMultiSelectBranches()`(Enquirer.MultiSelect)用于多选交互
|
|
77
|
+
- resume 的消息常量在 `MESSAGES.RESUME_*`,validate 的消息常量在 `MESSAGES.VALIDATE_*`,merge 的消息常量在 `MESSAGES.MERGE_*`,sync 的消息常量在 `MESSAGES.SYNC_*`,status 的消息常量在 `MESSAGES.STATUS_*`,remove 的 fuzzy search 消息在 `MESSAGES.REMOVE_*`
|
|
78
|
+
- resume、validate、merge 和 sync 的 `-b` 参数均为可选,匹配策略一致:精确→模糊(子串,大小写不敏感)→交互单选
|
|
79
|
+
- remove 的 `-b` 参数可选,匹配策略:精确→模糊→交互多选;不传 `-b` 时列出所有分支供多选
|
|
80
|
+
- validate 的交互式选择和 resume 使用同一个 `promptSelectBranch()`(Enquirer.Select);remove 使用 `promptMultiSelectBranches()`(Enquirer.MultiSelect)
|
|
78
81
|
|
|
79
82
|
## validate 快照机制
|
|
80
83
|
|
|
@@ -65,6 +65,17 @@ memory: project
|
|
|
65
65
|
4. **中文优先**:新增的文档内容使用中文,除非原文档使用英文且保持一致性更好。
|
|
66
66
|
5. **代码示例同步**:如果文档中有代码示例受到变更影响,必须同步更新。
|
|
67
67
|
|
|
68
|
+
## README.md 编写规则
|
|
69
|
+
|
|
70
|
+
README.md 的定位是**面向新用户的快速上手指南**,必须严格遵守以下规则:
|
|
71
|
+
|
|
72
|
+
1. **只写"怎么用",不写"怎么实现"**:不涉及内部原理、实现细节、技术架构等内容。用户只需要知道命令怎么敲、参数怎么传。
|
|
73
|
+
2. **保持简洁**:每个命令只展示最常用的用法和必要参数,避免罗列所有边界情况和细节行为(如分支匹配策略的内部逻辑、增量模式的 git 底层实现、squash 流程等)。
|
|
74
|
+
3. **结构固定**:README.md 应保持以下结构顺序:安装 → 快速开始 → 命令一览 → 配置 → 全局选项 → 日志。不要添加"开发"、"测试"、"技术栈"等面向开发者的章节。
|
|
75
|
+
4. **不包含开发相关内容**:测试命令、构建流程、技术选型、目录结构等开发者信息放在 `docs/spec.md` 中,不放在 README.md。
|
|
76
|
+
5. **命令说明精简**:每个命令给出简短描述 + 核心用法示例即可,参数表只在确实需要时才添加,且只列必要参数。
|
|
77
|
+
6. **详细的技术规格、设计原理、边界情况处理等内容应更新到 `docs/spec.md`**,而非 README.md。
|
|
78
|
+
|
|
68
79
|
## 质量检查
|
|
69
80
|
|
|
70
81
|
在完成更新前,自我检查:
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Clawt
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
基于 Git Worktree 并行执行多个 Claude Code Agent 任务,所有 Agent 的代码修改互不干扰。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
@@ -12,362 +12,135 @@ pnpm add -g clawt
|
|
|
12
12
|
npm i -g clawt
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
**环境要求:**
|
|
15
|
+
**环境要求:** Node.js >= 18 · Git >= 2.15 · Claude Code CLI
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
- Git >= 2.15
|
|
19
|
-
- Claude Code CLI(`clawt run` 和 `clawt resume` 需要)
|
|
20
|
-
|
|
21
|
-
## 使用前提
|
|
22
|
-
|
|
23
|
-
所有命令**必须在主 worktree 的仓库根目录**下执行(即包含 `.git` 目录的原始仓库)。在子 worktree 或子目录中执行会被拒绝。
|
|
24
|
-
|
|
25
|
-
## 全局选项
|
|
26
|
-
|
|
27
|
-
| 选项 | 说明 |
|
|
28
|
-
| ---- | ---- |
|
|
29
|
-
| `--debug` | 输出详细调试信息到终端,实时显示带颜色和时间戳的日志 |
|
|
30
|
-
|
|
31
|
-
`--debug` 可与任意子命令组合使用:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
clawt run -b feature-login --debug
|
|
35
|
-
clawt validate -b scheme --debug
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## 命令
|
|
39
|
-
|
|
40
|
-
### `clawt create` — 批量创建 worktree
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
clawt create -b <branchName> [-n <count>]
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
| 参数 | 必填 | 说明 |
|
|
47
|
-
| ---- | ---- | ---- |
|
|
48
|
-
| `-b` | 是 | 分支名 |
|
|
49
|
-
| `-n` | 否 | 创建数量,默认 `1` |
|
|
50
|
-
|
|
51
|
-
创建 1 个时,分支名即为 `<branchName>`;创建多个时,分支名会自动加后缀编号:`<branchName>-1`、`<branchName>-2`……
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# 创建 1 个 worktree
|
|
55
|
-
clawt create -b feature-login
|
|
56
|
-
|
|
57
|
-
# 创建 3 个 worktree
|
|
58
|
-
clawt create -b feature-scheme -n 3
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### `clawt run` — 批量创建 worktree + 并行执行 Claude Code 任务
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
# 多任务并行
|
|
65
|
-
clawt run -b <branchName> --tasks <task1> --tasks <task2> --tasks <task3>
|
|
66
|
-
|
|
67
|
-
# 单 worktree + Claude Code 交互式界面
|
|
68
|
-
clawt run -b <branchName>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
| 参数 | 必填 | 说明 |
|
|
72
|
-
| ---- | ---- | ---- |
|
|
73
|
-
| `-b` | 是 | 分支名 |
|
|
74
|
-
| `--tasks` | 否 | 任务描述,可多次指定,任务数量即 worktree 数量。不传则在 worktree 中打开 Claude Code 交互式界面 |
|
|
75
|
-
|
|
76
|
-
每个 `--tasks` 对应一个独立的 worktree,Claude Code 会在各自隔离的环境中并行执行任务。任务完成后会实时通知结果,全部完成后输出汇总信息。
|
|
77
|
-
|
|
78
|
-
不传 `--tasks` 时会创建单个 worktree,并在其中直接启动 Claude Code 交互式界面(通过 `spawnSync` + `inherit stdio`),让用户与 Claude Code 直接交互。启动命令由配置项 `claudeCodeCommand` 指定(默认 `claude`)。如果指定的分支已存在,会提示使用 `clawt resume -b <branchName>` 恢复会话。
|
|
79
|
-
|
|
80
|
-
任务执行过程中按 Ctrl+C 可中断所有任务。中断后会根据配置自动清理或询问是否清理本次创建的 worktree 和分支(`autoDeleteBranch: true` 时自动清理)。
|
|
17
|
+
## 快速开始
|
|
81
18
|
|
|
82
19
|
```bash
|
|
83
|
-
#
|
|
84
|
-
|
|
20
|
+
# 1. 在项目根目录(包含 .git 的目录)下执行
|
|
21
|
+
# 2. 并行执行 3 个任务,每个任务在独立的 worktree 中运行
|
|
22
|
+
clawt run -b feature-auth \
|
|
85
23
|
--tasks "实现用户登录功能" \
|
|
86
24
|
--tasks "实现用户注册功能" \
|
|
87
25
|
--tasks "实现密码重置功能"
|
|
88
26
|
|
|
89
|
-
#
|
|
90
|
-
clawt
|
|
91
|
-
```
|
|
27
|
+
# 3. 查看所有 worktree 状态
|
|
28
|
+
clawt status
|
|
92
29
|
|
|
93
|
-
|
|
30
|
+
# 4. 验证某个分支的变更(在主 worktree 中测试)
|
|
31
|
+
clawt validate -b feature-auth-1
|
|
94
32
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
clawt resume -b <branchName>
|
|
33
|
+
# 5. 确认无误后合并到主分支
|
|
34
|
+
clawt merge -b feature-auth-1 -m "feat: 实现用户登录功能"
|
|
98
35
|
|
|
99
|
-
#
|
|
100
|
-
clawt
|
|
36
|
+
# 6. 清理不需要的 worktree
|
|
37
|
+
clawt remove -b feature-auth
|
|
101
38
|
```
|
|
102
39
|
|
|
103
|
-
|
|
104
|
-
| ---- | ---- | ---- |
|
|
105
|
-
| `-b` | 否 | 要恢复的分支名(支持模糊匹配,不传则列出所有分支供选择) |
|
|
40
|
+
## 命令一览
|
|
106
41
|
|
|
107
|
-
|
|
42
|
+
> 所有命令必须在**主 worktree 的仓库根目录**下执行。`-b` 参数支持模糊匹配。
|
|
108
43
|
|
|
109
|
-
|
|
110
|
-
- 传 `-b` 时,优先精确匹配分支名;未精确匹配则进行模糊匹配(子串匹配,大小写不敏感);模糊匹配到多个时通过交互列表选择;无匹配时报错并列出所有可用分支
|
|
111
|
-
- 不传 `-b` 时,列出当前项目所有可用分支供交互式选择(仅 1 个时自动使用)
|
|
44
|
+
### `clawt run` — 创建 worktree 并执行任务
|
|
112
45
|
|
|
113
46
|
```bash
|
|
114
|
-
#
|
|
115
|
-
clawt
|
|
116
|
-
|
|
117
|
-
# 模糊匹配(匹配包含 "login" 的分支)
|
|
118
|
-
clawt resume -b login
|
|
47
|
+
# 多任务并行(每个 --tasks 对应一个独立 worktree)
|
|
48
|
+
clawt run -b <branch> --tasks "任务1" --tasks "任务2"
|
|
119
49
|
|
|
120
|
-
#
|
|
121
|
-
clawt
|
|
50
|
+
# 单 worktree,打开 Claude Code 交互式界面
|
|
51
|
+
clawt run -b <branch>
|
|
122
52
|
```
|
|
123
53
|
|
|
124
|
-
|
|
54
|
+
按 `Ctrl+C` 可中断所有任务。
|
|
125
55
|
|
|
126
|
-
|
|
127
|
-
# 指定分支名(支持模糊匹配)
|
|
128
|
-
clawt validate -b <branchName> [--clean]
|
|
56
|
+
### `clawt resume` — 恢复之前的 Claude Code 会话
|
|
129
57
|
|
|
130
|
-
|
|
131
|
-
clawt
|
|
58
|
+
```bash
|
|
59
|
+
clawt resume -b <branch> # 指定分支
|
|
60
|
+
clawt resume # 交互式选择
|
|
132
61
|
```
|
|
133
62
|
|
|
134
|
-
|
|
135
|
-
| ---- | ---- | ---- |
|
|
136
|
-
| `-b` | 否 | 要验证的分支名(支持模糊匹配,不传则列出所有分支供选择) |
|
|
137
|
-
| `--clean` | 否 | 清理 validate 状态(重置主 worktree 并删除快照) |
|
|
138
|
-
|
|
139
|
-
将目标 worktree 的变更通过 `git diff`(三点 diff)迁移到主 worktree,方便在主 worktree 中直接测试,无需重新安装依赖。同时检测未提交修改和已提交 commit,确保所有变更都能被捕获。
|
|
140
|
-
|
|
141
|
-
**分支匹配策略:**
|
|
142
|
-
- 传 `-b` 时,优先精确匹配分支名;未精确匹配则进行模糊匹配(子串匹配,大小写不敏感);模糊匹配到多个时通过交互列表选择;无匹配时报错并列出所有可用分支
|
|
143
|
-
- 不传 `-b` 时,列出当前项目所有可用分支供交互式选择(仅 1 个时自动使用)
|
|
144
|
-
|
|
145
|
-
支持增量模式:首次 validate 后会自动保存快照(通过 `git write-tree` 将变更存储为 git tree 对象,并记录当前 HEAD commit hash),再次 validate 同一分支时会将上次快照载入暂存区、最新变更保留在工作目录,用户可通过 `git diff` 查看两次 validate 之间的增量差异。当主分支 HEAD 发生变化(如合并了其他分支)时,会自动将旧变更 patch 重放到当前 HEAD 暂存区上,避免 diff 混入 HEAD 变化的内容;若 patch 存在冲突则自动降级为全量模式。使用 `--clean` 可清理 validate 状态(重置主 worktree 并删除快照文件)。
|
|
146
|
-
|
|
147
|
-
> **提示:** 如果 validate 时 patch apply 失败(目标分支与主分支差异过大),可先执行 `clawt sync -b <branchName>` 同步主分支后重试。
|
|
63
|
+
### `clawt create` — 仅创建 worktree(不执行任务)
|
|
148
64
|
|
|
149
65
|
```bash
|
|
150
|
-
#
|
|
151
|
-
clawt
|
|
152
|
-
|
|
153
|
-
# 模糊匹配(匹配包含 "scheme" 的分支)
|
|
154
|
-
clawt validate -b scheme
|
|
155
|
-
|
|
156
|
-
# 交互式选择所有分支
|
|
157
|
-
clawt validate
|
|
158
|
-
|
|
159
|
-
# 再次验证(增量模式,可通过 git diff 查看增量差异)
|
|
160
|
-
clawt validate -b feature-scheme-1
|
|
161
|
-
|
|
162
|
-
# 清理 validate 状态(同样支持模糊匹配)
|
|
163
|
-
clawt validate -b feature-scheme-1 --clean
|
|
164
|
-
clawt validate --clean
|
|
66
|
+
clawt create -b <branch> # 创建 1 个
|
|
67
|
+
clawt create -b <branch> -n 3 # 批量创建 3 个
|
|
165
68
|
```
|
|
166
69
|
|
|
167
|
-
### `clawt
|
|
70
|
+
### `clawt validate` — 在主 worktree 中验证分支变更
|
|
168
71
|
|
|
169
72
|
```bash
|
|
170
|
-
#
|
|
171
|
-
clawt
|
|
172
|
-
|
|
173
|
-
# 不指定分支名(列出所有分支供选择)
|
|
174
|
-
clawt sync
|
|
73
|
+
clawt validate -b <branch> # 将变更迁移到主 worktree 测试
|
|
74
|
+
clawt validate -b <branch> --clean # 清理 validate 状态
|
|
175
75
|
```
|
|
176
76
|
|
|
177
|
-
|
|
178
|
-
| ---- | ---- | ---- |
|
|
179
|
-
| `-b` | 否 | 要同步的分支名(支持模糊匹配,不传则列出所有分支供选择) |
|
|
77
|
+
支持增量模式:再次 validate 同一分支时,可通过 `git diff` 查看两次之间的增量差异。
|
|
180
78
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
**分支匹配策略:**
|
|
184
|
-
- 传 `-b` 时,优先精确匹配分支名;未精确匹配则进行模糊匹配(子串匹配,大小写不敏感);模糊匹配到多个时通过交互列表选择;无匹配时报错并列出所有可用分支
|
|
185
|
-
- 不传 `-b` 时,列出当前项目所有可用分支供交互式选择(仅 1 个时自动使用)
|
|
79
|
+
### `clawt sync` — 同步主分支代码到目标 worktree
|
|
186
80
|
|
|
187
81
|
```bash
|
|
188
|
-
|
|
189
|
-
clawt sync -b feature-scheme-1
|
|
190
|
-
|
|
191
|
-
# 模糊匹配(匹配包含 "scheme" 的分支)
|
|
192
|
-
clawt sync -b scheme
|
|
193
|
-
|
|
194
|
-
# 交互式选择所有分支
|
|
195
|
-
clawt sync
|
|
82
|
+
clawt sync -b <branch>
|
|
196
83
|
```
|
|
197
84
|
|
|
198
85
|
### `clawt merge` — 合并分支到主 worktree
|
|
199
86
|
|
|
200
87
|
```bash
|
|
201
|
-
#
|
|
202
|
-
clawt merge -b <
|
|
203
|
-
|
|
204
|
-
# 不指定分支名(列出所有分支供选择)
|
|
205
|
-
clawt merge [-m <commitMessage>]
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
| 参数 | 必填 | 说明 |
|
|
209
|
-
| ---- | ---- | ---- |
|
|
210
|
-
| `-b` | 否 | 要合并的分支名(支持模糊匹配,不传则列出所有分支供选择) |
|
|
211
|
-
| `-m` | 否 | 提交信息(目标 worktree 工作区有修改时必填) |
|
|
212
|
-
|
|
213
|
-
将目标 worktree 的变更合并到主 worktree 的当前分支。如果配置了 `autoPullPush: true`,合并后会自动推送到远程仓库。如果目标 worktree 工作区有未提交的修改,需要通过 `-m` 提供提交信息;如果目标 worktree 已经提交过(工作区干净但有本地提交),可以省略 `-m` 直接合并。merge 成功后会询问是否清理对应的 worktree 和分支(如果配置了 `autoDeleteBranch: true` 则自动清理)。
|
|
214
|
-
|
|
215
|
-
**分支匹配策略:**
|
|
216
|
-
- 传 `-b` 时,优先精确匹配分支名;未精确匹配则进行模糊匹配(子串匹配,大小写不敏感);模糊匹配到多个时通过交互列表选择;无匹配时报错并列出所有可用分支
|
|
217
|
-
- 不传 `-b` 时,列出当前项目所有可用分支供交互式选择(仅 1 个时自动使用)
|
|
218
|
-
|
|
219
|
-
如果检测到目标分支存在 `clawt sync` 产生的临时提交(auto-save commit),会自动提示是否将所有提交压缩(squash)为一个。用户选择压缩后,所有 commit 会被 reset 到暂存区:如果提供了 `-m` 则直接提交并继续合并流程;如果未提供 `-m` 则提示用户前往目标 worktree 自行提交后重新执行 merge。
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
# 精确匹配,目标 worktree 有未提交修改,需提供 -m
|
|
223
|
-
clawt merge -b feature-scheme-1 -m "feat: 实现用户登录功能"
|
|
224
|
-
|
|
225
|
-
# 模糊匹配(匹配包含 "scheme" 的分支)
|
|
226
|
-
clawt merge -b scheme
|
|
227
|
-
|
|
228
|
-
# 交互式选择所有分支
|
|
229
|
-
clawt merge
|
|
230
|
-
|
|
231
|
-
# 目标 worktree 已提交过,可省略 -m
|
|
232
|
-
clawt merge -b feature-scheme-1
|
|
88
|
+
clawt merge -b <branch> -m "feat: 提交信息" # 有未提交修改时需要 -m
|
|
89
|
+
clawt merge -b <branch> # 已提交过可省略 -m
|
|
233
90
|
```
|
|
234
91
|
|
|
235
92
|
### `clawt remove` — 移除 worktree
|
|
236
93
|
|
|
237
94
|
```bash
|
|
238
|
-
clawt remove
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
支持三种移除粒度:
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
# 移除当前项目下所有 worktree
|
|
245
|
-
clawt remove --all
|
|
246
|
-
|
|
247
|
-
# 移除指定分支名下的所有 worktree(匹配 feature-scheme 和 feature-scheme-*)
|
|
248
|
-
clawt remove -b feature-scheme
|
|
249
|
-
|
|
250
|
-
# 移除单个 worktree(直接写完整分支名)
|
|
251
|
-
clawt remove -b feature-scheme-2
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
移除时会询问是否同时删除对应的本地分支。移除 worktree 时会自动清理对应的 validate 快照;`--all` 模式还会清理整个项目的快照目录。批量移除时单个失败不会中断整个流程,最后汇总报告失败项。
|
|
255
|
-
|
|
256
|
-
### `clawt list` — 列出当前项目所有 worktree
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
clawt list [--json]
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
| 参数 | 必填 | 说明 |
|
|
263
|
-
| ---- | ---- | ---- |
|
|
264
|
-
| `--json` | 否 | 以 JSON 格式输出(仅包含 path 和 branch) |
|
|
265
|
-
|
|
266
|
-
列出当前项目在 `~/.clawt/worktrees/` 下的所有 worktree 及对应分支。文本模式下,如果某个 worktree 处于空闲状态(0 个提交、无变更、无未提交修改),其路径会以橙色高亮显示,方便快速识别可能需要清理或还未开始工作的 worktree。指定 `--json` 时以 JSON 格式输出,便于脚本解析。
|
|
267
|
-
|
|
268
|
-
```bash
|
|
269
|
-
# 文本格式输出(默认)
|
|
270
|
-
clawt list
|
|
271
|
-
|
|
272
|
-
# JSON 格式输出
|
|
273
|
-
clawt list --json
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### `clawt status` — 显示项目全局状态总览
|
|
277
|
-
|
|
278
|
-
```bash
|
|
279
|
-
clawt status [--json]
|
|
95
|
+
clawt remove -b <branch> # 移除指定分支的 worktree(支持模糊匹配)
|
|
96
|
+
clawt remove # 交互式多选要移除的 worktree
|
|
97
|
+
clawt remove --all # 移除当前项目下所有 worktree
|
|
280
98
|
```
|
|
281
99
|
|
|
282
|
-
|
|
283
|
-
| ---- | ---- | ---- |
|
|
284
|
-
| `--json` | 否 | 以 JSON 格式输出完整状态数据 |
|
|
285
|
-
|
|
286
|
-
显示项目全局状态总览,包括:主 worktree 当前分支及干净状态、所有 worktree 的变更状态(已提交/未提交/合并冲突/无变更)、与主分支的差异(领先/落后提交数、行数变更)、未清理的 validate 快照检测(标识孤立快照)。
|
|
287
|
-
|
|
288
|
-
文本模式下输出分为三个区块:主 Worktree 状态、Worktree 列表(含变更状态标签和差异统计)、未清理的 Validate 快照。指定 `--json` 时以 JSON 格式输出完整状态数据,便于脚本解析。
|
|
100
|
+
### `clawt list` — 列出所有 worktree
|
|
289
101
|
|
|
290
102
|
```bash
|
|
291
|
-
#
|
|
292
|
-
clawt
|
|
293
|
-
|
|
294
|
-
# JSON 格式输出
|
|
295
|
-
clawt status --json
|
|
103
|
+
clawt list # 文本格式
|
|
104
|
+
clawt list --json # JSON 格式
|
|
296
105
|
```
|
|
297
106
|
|
|
298
|
-
### `clawt
|
|
107
|
+
### `clawt status` — 项目状态总览
|
|
299
108
|
|
|
300
109
|
```bash
|
|
301
|
-
clawt
|
|
110
|
+
clawt status # 文本格式
|
|
111
|
+
clawt status --json # JSON 格式
|
|
302
112
|
```
|
|
303
113
|
|
|
304
|
-
|
|
114
|
+
### `clawt reset` — 重置主 worktree 到干净状态
|
|
305
115
|
|
|
306
116
|
```bash
|
|
307
|
-
# 重置主 worktree 工作区和暂存区
|
|
308
117
|
clawt reset
|
|
309
118
|
```
|
|
310
119
|
|
|
311
|
-
### `clawt config` —
|
|
120
|
+
### `clawt config` — 查看配置
|
|
312
121
|
|
|
313
122
|
```bash
|
|
314
|
-
#
|
|
315
|
-
clawt config
|
|
316
|
-
|
|
317
|
-
# 将配置恢复为默认值
|
|
318
|
-
clawt config reset
|
|
123
|
+
clawt config # 查看当前配置
|
|
124
|
+
clawt config reset # 恢复默认配置
|
|
319
125
|
```
|
|
320
126
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
`config reset` 子命令可将配置文件恢复为默认值,执行前会弹出确认提示(受 `confirmDestructiveOps` 配置项控制)。
|
|
127
|
+
## 配置
|
|
324
128
|
|
|
325
|
-
|
|
129
|
+
配置文件位于 `~/.clawt/config.json`,安装后自动生成:
|
|
326
130
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
"autoPullPush": false,
|
|
334
|
-
"confirmDestructiveOps": true
|
|
335
|
-
}
|
|
336
|
-
```
|
|
131
|
+
| 配置项 | 默认值 | 说明 |
|
|
132
|
+
| ------ | ------ | ---- |
|
|
133
|
+
| `autoDeleteBranch` | `false` | 自动删除已合并/已移除的分支 |
|
|
134
|
+
| `claudeCodeCommand` | `"claude"` | Claude Code CLI 启动命令 |
|
|
135
|
+
| `autoPullPush` | `false` | merge 后自动 pull/push |
|
|
136
|
+
| `confirmDestructiveOps` | `true` | 破坏性操作前确认 |
|
|
337
137
|
|
|
338
|
-
|
|
339
|
-
| ------ | ---- | ------ | ---- |
|
|
340
|
-
| `autoDeleteBranch` | `boolean` | `false` | 移除 worktree 时自动删除对应本地分支;merge 成功后自动清理 worktree 和分支;run 中断后自动清理本次创建的 worktree 和分支 |
|
|
341
|
-
| `claudeCodeCommand` | `string` | `"claude"` | Claude Code CLI 启动指令,用于 `clawt run` 不传 `--tasks` 时和 `clawt resume` 在 worktree 中打开交互式界面 |
|
|
342
|
-
| `autoPullPush` | `boolean` | `false` | merge 成功后是否自动执行 git pull 和 git push |
|
|
343
|
-
| `confirmDestructiveOps` | `boolean` | `true` | 执行破坏性操作(reset、validate --clean、config reset)前是否提示确认 |
|
|
344
|
-
|
|
345
|
-
## 分支名规则
|
|
346
|
-
|
|
347
|
-
分支名中的特殊字符(`/`、`.`、空格、`~` 等)会被自动替换为 `-`,连续的 `-` 会被压缩,首尾 `-` 会被去除。发生转换时会在终端提示。
|
|
138
|
+
## 全局选项
|
|
348
139
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
140
|
+
| 选项 | 说明 |
|
|
141
|
+
| ---- | ---- |
|
|
142
|
+
| `--debug` | 输出调试信息 |
|
|
352
143
|
|
|
353
144
|
## 日志
|
|
354
145
|
|
|
355
|
-
日志保存在 `~/.clawt/logs
|
|
356
|
-
|
|
357
|
-
## 开发
|
|
358
|
-
|
|
359
|
-
### 测试
|
|
360
|
-
|
|
361
|
-
项目使用 [Vitest](https://vitest.dev/) 作为测试框架,搭配 `@vitest/coverage-v8` 生成覆盖率报告。
|
|
362
|
-
|
|
363
|
-
```bash
|
|
364
|
-
# 执行全部测试
|
|
365
|
-
npm test
|
|
366
|
-
|
|
367
|
-
# 监听模式(文件变更后自动重新运行)
|
|
368
|
-
npm run test:watch
|
|
369
|
-
|
|
370
|
-
# 执行测试并生成覆盖率报告
|
|
371
|
-
npm run test:coverage
|
|
372
|
-
```
|
|
373
|
-
|
|
146
|
+
日志保存在 `~/.clawt/logs/`,按日期滚动,保留 30 天。
|