【发布时间】:2022-11-12 15:02:52
【问题描述】:
我想要一个接受两个字符串并生成差异补丁字符串的函数,即git diff foo。
我正在开发一个带有历史的 wiki 风格的系统。为了实现历史,我认为只存储文档补丁内容而不是每个版本的文档的完整副本是有效的。重播补丁似乎是重现文档任何版本的好方法。 git 已经做得很好了。我想使用 git 的版本控制功能,而不是为每个文档创建 git 索引,而是将我的数据库用作功能较弱的版本存储。
我打算使用https://docs.rs/git2/latest/git2/index.html,但还不知道:
- 如何在 mem 中创建一个空的 git 索引
- 将我的文档 v1 加载到 git 索引中
- 区分我的文档 v1 和文档 v2
- 提取补丁文件文本
任何建议都会很棒!我也使用 libcgit2 进行标记,因为尽管使用了 rust,但我相信我可以将 C 示例移植到 rust 绑定。
【问题讨论】:
-
为什么不直接使用真正的 Git 存储库? Git 已经非常擅长优化事物。
-
设计约束要求我的单个数据存储是一个 sqlite 数据库