如何记录文本变更历史并保存至数据库,且能方便回溯至任意历史版本?

2021-11-11 11:57:24 +08:00
 anzu
虽然可以通过一些文本对比的工具自己写一套代码,但感觉好麻烦。
比如保存了几百万的网页,并持续追踪内容变更,想把每个网页变更记录保存至数据库并不时查看。希望每次只保存变更而不是全文本,类似 git ,应该有类似的库吧?
801 次点击
所在节点    问与答
5 条回复
czfy
2021-11-11 12:52:47 +08:00
"保存了几百万的网页"

你这是爬虫数据库?
jifengg
2021-11-11 13:50:58 +08:00
正想说用 git ,你已经自己说了。不合适的话,找找“版本控制”还有啥的吧
sillydaddy
2021-11-11 14:06:02 +08:00
用 git 吧

“将 git 版本管理,集成到自己的应用中,既可以使用多进程起「命令行」,也可以集成 git 的「库」如 libgit2”:
https://git-scm.com/book/en/v2/Appendix-B%3A-Embedding-Git-in-your-Applications-Command-line-Git
https://git-scm.com/book/en/v2/Appendix-B%3A-Embedding-Git-in-your-Applications-Libgit2

“将 git 用作 NoSQL 数据库,举例介绍了 git 中 commit, tree, blob 的概念”(我看了一下,还挺简单):
https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/

“libgit2 库还可以适配自己的后端来存储内容,比如 MySQL ,sqlite ,redis 等”:
https://github.com/libgit2/libgit2-backends

“libgit2 的 API 非常丰富,简直吓人”(不过应该只需要极少的几个就足够了):
https://libgit2.org/libgit2/#HEAD
locoz
2021-11-11 14:08:40 +08:00
用工具生成.patch 文件就好了吧?
dingwen07
2021-11-11 14:10:41 +08:00
既然你知道什么是版本管理,那我就不说了
不过还有一个东西叫 wikipedia ,可能可以参考一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX