Description
背景
目前 opensumi 的解决冲突功能默认是基于 vscode 的 merge-conflict 模块
也就是最常见的在单文件上显示冲突符号 7 个 '<' '=' '>'
采用当前更改 | 采用传入的更改 | 保留双方更改 | 比较变更
<<<<<<<
code1
=======
code2
>>>>>>>
所有的操作都集中在 codelens 上执行,这对于冲突代码行数较少的情况下比较方便,任何操作反馈都能在一个窗口中看到
而对于冲突代码行数较多,冲突个数也较多的情况下就比较难看得出来差异
而 vscode 在一次版本更新中提供了 3-way merge editor 视图的解决冲突的新交互
见: 3-way-merge-editor
最新版本将复选框操作默认改为 codelens 了,只有通过设置 "mergeEditor.showCheckboxes" 才会出现复选框
视图分上下两大块区域,上面是两个冲突文件分别与 base 分支的 diff 差异结果,下面是解决冲突后的 result 结果
整体的视觉风格和 visual studio 的合并冲突有点像
👇这是 visual studio 的
比较不同的是解决冲突的各种操作还是以 codelens 为主,而不是复选框
相关 issue
microsoft/vscode#37350: 社区用户期望在 vscode 里也能使用像是 IntelliJ 或 WebStorm 的解决冲突工具
microsoft/vscode#146091: 3-way 合并视图的 UX 设计
microsoft/vscode#157361: 新的 3-way 视图上线后网友对这个新交互的评价似乎不太友好,较多人反馈学习曲线复杂,总结一句就是 It's not fun!
microsoft/vscode#160806: 在上一个 issue 中饱受用户强力的吐槽之后,将这一功能通过配置来默认关闭了(悲催)
但微软并没有放弃这一个大的新特性,而是作为一个开关配置项并默认关闭,同时在旧版的内联编辑器右下角提供了 resolve in merge editor
按钮来跳转到 3-way 视图模式
其实在 #157361 中用户所吐槽的大多数都是一些冲突行数较少的情况,这时肯定是旧版的内联编辑器交互更友好一些