您可以使用Google Diff/Match/Patch library来实现此目的。它具有Python,C++,Java,LUA,Objective C和Javascript的绑定。您可以将原始文件下载到客户端,在服务器端生成补丁列表(您想要跟踪哪个客户端了解哪个版本以了解您的出发点是什么;这可以在客户端或服务器),将客户端本地修订的修补程序最新下载到客户端,然后使用客户端库来应用修补程序。一旦获得更改,您需要更新该客户端修订版追踪编号。
为了完整起见,我已经包含了一个实现示例。我对这个图书馆的工作有多好,并打算将其保留在我的工具栏中印象深刻。
// C# server-side code
DiffMatchPatch.diff_match_patch differ = new DiffMatchPatch.diff_match_patch();
// I'm using literals, you'd pull these from a DB, etc.
var results = differ.patch_make("ABCDEFG", "ABCDEFQ");
var serializedResults = differ.patch_toText(results);
// Send serializedResults to client...
在客户端:
// Javascript client-side code
var patcher = new diff_match_patch();
// The below literal is what *would* be sent
var patches = patcher.patch_fromText("@@ -3,5 +3,5 @@\n CDEF\n-G\n+Q\n");
var results = patcher.patch_apply(patches, 'ABCDEFG');
alert(results);