JavaScript 库用于处理合并两个冲突的更改到底层文本文件(如 git)?

问题描述 投票:0回答:1

我正在想象某种程度的重新创建维基百科编辑体验,但在 Next.js/React/JS 中。根据 ChatGPT,当两个用户同时编辑维基百科页面并保存在一起时:

MediaWiki 将检测冲突并生成“编辑冲突”页面。此页面将显示文本的两个版本,突出显示冲突的部分。然后,编辑者可以手动合并更改或选择一个版本而不是另一个版本。他们还可以进行进一步编辑来解决冲突。

目前我能看到的唯一 UI 示例是 this:


如何在 JavaScript 领域实现这一点?有一个库可以做到这一点吗?我见过 jsdiff,用于在 JS 中生成可视文本差异,但“解决冲突”部分我不太确定如何实现。也许这是一个用户体验问题。

我只想有一个简单的解决方案,如下所示(不是完整的 git 替代方案):多个用户正在编辑一个文件。当您开始编辑时,它会在草稿模式下创建文件的“分叉”或“分支”。完成后,您尝试将分支草稿合并到原始文件中。如果自您上次分支以来进行了更改,那么它会进行比较,并显示差异。问题是,应该采取什么措施来解决差异?

一种解决方案是“采取其中之一”的解决方案。另一个解决方案是像 git 那样做,以及如何在文本编辑器中手动修复 git 中的合并冲突,并使用

>>>>>>
等边界。 JS 有没有工具可以做到这一点?或者我可以在 CLI 上破解 git 以某种方式对两个文件执行此操作(这样会很快)?

这里基本上有哪些选项?

旁注:我越想这个,就越考虑让用户将他们的博客文章直接添加到“博客文章 git repo”中,并以这种方式处理它。这种方法存在进入障碍,也存在问题,但至少这样我就不必在这个复杂的问题上重新发明轮子了。

javascript git diff merge-conflict-resolution
1个回答
0
投票

所以this稍微解释了维基百科上编辑器界面的工作原理:

  • 对于相同的线条,它们以灰色拉伸全宽显示。
  • 不同的线成对显示。左边是黄色的他者,右边是蓝色的你的。
  • 您可以编辑其中之一,然后单击“发布”。

我认为这个 json-diff-patch 库可能就是门票,然后在其之上构建这种接口。如果您知道更好的,请发布另一个答案。

© www.soinside.com 2019 - 2024. All rights reserved.