mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
feat(update): 新增 --keep-repo 参数,dry-run 模式下保留上游克隆目录便于对比
This commit is contained in:
@@ -98,6 +98,29 @@ php think admin:update --dry-run
|
||||
|
||||
向开发者报告以上信息,由开发者决定是否继续。
|
||||
|
||||
### 4.5 跳过文件处理
|
||||
|
||||
当 dry-run 输出中存在 `[skipped]` 标记的文件时,说明这些冲突文件被跳过了。此时建议重新执行 dry-run 并加 `--keep-repo`,保留上游克隆目录用于对比:
|
||||
|
||||
```bash
|
||||
php think admin:update --dry-run --optional-conflict=skip --force-conflict=overwrite --keep-repo
|
||||
```
|
||||
|
||||
命令结束后,以下目录会被保留:
|
||||
|
||||
| 目录 | 内容 |
|
||||
|------|------|
|
||||
| `runtime/update/current/` | 当前安装版本的原始代码 |
|
||||
| `runtime/update/repo/` | 上游最新版本的代码 |
|
||||
| 项目根目录 | 开发者实际修改的代码 |
|
||||
|
||||
**对比方式**:逐个读取三个版本的跳过文件,辅助开发者判断是否需要合入上游改动。关注点:
|
||||
- 上游改了什么(对比 `current/` vs `repo/`)
|
||||
- 开发者改了什么(对比 `current/` vs 项目根目录)
|
||||
- 两者是否冲突
|
||||
|
||||
**清理方式**:下次运行 `admin:update` 时会自动清理 `runtime/update/` 目录,或手动删除。
|
||||
|
||||
## 5. 参数参考
|
||||
|
||||
| 参数 | 可选值 | 说明 |
|
||||
@@ -106,6 +129,7 @@ php think admin:update --dry-run
|
||||
| `--optional-conflict` | `skip` / `overwrite` / `ask` | 可选文件(app/config/route/extend/think/根目录文件)的冲突处理策略 |
|
||||
| `--force-conflict` | `overwrite` / `skip` / `ask` | 强制文件(extend/base/public/database/think)的冲突处理策略 |
|
||||
| `--show` | `all` / `conflict` | 变更输出范围:all 显示全部文件,conflict 只显示冲突文件 |
|
||||
| `--keep-repo` | (无值) | 预览模式下保留上游克隆目录(runtime/update/current/ 和 runtime/update/repo/),便于手动对比跳过的冲突文件 |
|
||||
| `--reinstall` | (无值) | 即使当前版本已是最新,也强制重新安装代码 |
|
||||
| `--update-master` | (无值) | 更新到 master 分支而非最新 tag |
|
||||
|
||||
@@ -143,6 +167,7 @@ php think admin:update --optional-conflict=skip --force-conflict=skip --show=all
|
||||
|
||||
- **永远不要使用 `ask` 模式**。agent 无法处理交互式确认提示(`$output->confirm()`),会导致命令挂起
|
||||
- **不要省略冲突策略参数**。不传参数时,如果存在冲突文件,命令会回退到交互模式,同样会挂起
|
||||
- **`--keep-repo` 仅在预览模式下有效**:正式执行时自动忽略,不会保留目录
|
||||
|
||||
## 7. 冲突处理指引
|
||||
|
||||
|
||||
Reference in New Issue
Block a user