如何使用 libgit2 实现合并冲突预览?
How to implement merge conflict preview using libgit2?
我正在尝试实现一个内容管理网站,在很多方面,它就像一个简化的 github。
版本控制和协作部分基于 git 使用 libgit2。
但我找不到如何实现合并冲突预览,这会告诉用户她的更改是否可以合并,以及哪些行有冲突。
这里的例子https://github.com/libgit2/libgit2/blob/master/examples/merge.c
与git_merge函数进行合并,但是这个函数会直接改变当前索引。
我还检查了一个 github 开源替代品,但我现在忘记了它的名字。该项目使用了 eclipse ide 中的一个库,它提供了一个冲突预览功能ide。
我应该如何使用 libgit2 实现它,是否有示例代码?
如您所述,git_merge
函数改变了工作目录和索引。您可以使用 git_merge_commits
函数在内存中合并两个提交和 return 结果索引。
然后您可以遍历索引以查找冲突,或者如果您只想知道是否存在冲突,则只需调用 git_index_has_conflicts
。
我正在尝试实现一个内容管理网站,在很多方面,它就像一个简化的 github。
版本控制和协作部分基于 git 使用 libgit2。
但我找不到如何实现合并冲突预览,这会告诉用户她的更改是否可以合并,以及哪些行有冲突。
这里的例子https://github.com/libgit2/libgit2/blob/master/examples/merge.c
与git_merge函数进行合并,但是这个函数会直接改变当前索引。
我还检查了一个 github 开源替代品,但我现在忘记了它的名字。该项目使用了 eclipse ide 中的一个库,它提供了一个冲突预览功能ide。
我应该如何使用 libgit2 实现它,是否有示例代码?
如您所述,git_merge
函数改变了工作目录和索引。您可以使用 git_merge_commits
函数在内存中合并两个提交和 return 结果索引。
然后您可以遍历索引以查找冲突,或者如果您只想知道是否存在冲突,则只需调用 git_index_has_conflicts
。