使用git2编程创建一个diff补丁



我想要一个函数,它接受两个字符串并生成一个diff补丁字符串,一个lagit diff foo

我正在开发一个维基风格的历史系统。为了实现历史记录,我认为只存储文档补丁内容,而不是存储文档每个版本的完整副本是有效的。重播补丁程序似乎是复制文档任何版本的好方法。git已经做得很好了。我想使用git的版本控制功能,而不是为每个文档创建git索引,而是将我的数据库用作功能较弱的版本存储。

我计划使用https://docs.rs/git2/latest/git2/index.html,但还不能弄清楚:

  • 如何在mem git中创建一个空索引
  • 将我的文档v1加载到git索引中
  • 将我的文档v1与文档v2进行比较
  • 提取修补程序文件文本

任何建议都会很棒!我也使用libcgit2进行标记,因为尽管使用了rust,但我相信我可以将C示例移植到rust绑定中。

如果您的数据不是作为git存储库存储的,那么libgit2不是帮助您的最佳工具。但是,如果您确实想存储为git repo,那么它是一个很好的库。

如果你想在Rust中区分两个文本,你最好使用这样的东西https://crates.io/crates/diff或https://crates.io/crates/slice-diff-patch.

最新更新