现状
只有导出:GitClient.formatPatch(_:) 走 format-patch -1 --stdout(Sources/TheGit/Core/GitClient.swift:304)。没有反向的导入。
目标
补齐 patch 的另一半:
- 「Apply Patch…」选一个
.patch / .diff 文件 → git apply 或 git am
- 两种模式:
git apply(只改工作区)和 git am(保留作者信息并生成提交)
- 冲突时进入现有的 ongoing-operation 流程 —— 注意
operationState()(GitClient.swift:102)目前检测 rebase-apply 会被判成 .rebase,git am 用的正是这个目录,需要区分开
实现要点
applyPatch(_:reverse:) 已经有写临时文件 + git apply --cached 的模式(GitClient.swift:70),可以复用。
git am 失败时的 continue/skip/abort 要接进 OngoingOperation。
优先级
P2 —— 已经有导出,只差反向,成本很低。邮件流 patch 的用户会用到。
现状
只有导出:
GitClient.formatPatch(_:)走format-patch -1 --stdout(Sources/TheGit/Core/GitClient.swift:304)。没有反向的导入。目标
补齐 patch 的另一半:
.patch/.diff文件 →git apply或git amgit apply(只改工作区)和git am(保留作者信息并生成提交)operationState()(GitClient.swift:102)目前检测rebase-apply会被判成.rebase,git am用的正是这个目录,需要区分开实现要点
applyPatch(_:reverse:)已经有写临时文件 +git apply --cached的模式(GitClient.swift:70),可以复用。git am失败时的 continue/skip/abort 要接进OngoingOperation。优先级
P2 —— 已经有导出,只差反向,成本很低。邮件流 patch 的用户会用到。