标签: google-diff-match-patch

如何使Google差异匹配补丁更喜欢字符串末尾的更改?

我正在使用diff_mainGoogle的DiffMatchPatch库的方法来获取差异,然后我在我的应用程序中使用.考虑这种情况:

旧字符串:

Tracker.Dependency.prototype.changed = function () {
   for (var id in this._dependentsById)
     this._dependentsById[id]._compute();
};
Run Code Online (Sandbox Code Playgroud)

新字符串:

Tracker.Dependency.prototype.changed = function () {
  for (var id in this._dependentsById)
    this._dependentsById[id]._compute();
};

Tracker.autorun = function (f) {
  constructingComputation = true;
  var c = new Tracker.Computation(f);
  return c;
};
Run Code Online (Sandbox Code Playgroud)

我得到的加法差异是:

;
};

Tracker.autorun = function (f) {
  constructingComputation = true;
  var c = new Tracker.Computation(f);
  return c
Run Code Online (Sandbox Code Playgroud)

然而,对于人类消费来说,似乎更合理的差异是:

Tracker.autorun = function (f) {
  constructingComputation = true;
  var c = new Tracker.Computation(f);
  return c;
}; …
Run Code Online (Sandbox Code Playgroud)

javascript google-diff-match-patch

16
推荐指数
1
解决办法
1751
查看次数

用于并发更新的Google差异匹配补丁

所以,我的应用程序中有一个谷歌文档类型功能,可以由多个用户同时编辑. 当只有一个用户更新文档时,Diff-match-patch对我来说很好.

但是当它说docs已经由user1更新并且没有传递给user2时(由于套接字错误或网络错误),它会生成错误的数据.

例如 - '堆栈溢出是55666'.是我的文档,由多个用户编辑.现在,user1将其更改为'Stack overflow is 6.'

并计算diff并将其发送到服务器,但在此之前user2已将其更改为其他内容,比如说'Stack overflow is 25552.'.现在,当应用补丁(来自user1)时,它会产生错误的结果 'Stack overflow is 252.'

那么如何管理它以实现并发更新?我可以使用Socket,这样如果其他人更改,我会将更改发送给其他用户,以便他们可以拥有最新的更新数据,但如果更改很多,则UX可能会很糟糕,因为其他用户可能会看到随机更改.

javascript google-diff-match-patch

5
推荐指数
0
解决办法
150
查看次数

diff_match_patch可以为diff2html创建统一的diff字符串吗?

diff_match_patch 可以用来创建可以在 diff2html 中使用的统一 diff 字符串吗?

google-diff-match-patch diff2html

5
推荐指数
0
解决办法
453
查看次数