首页 > 解决方案 > 当用户 git_merge 在 libgit2 中失败时如何输出通知回调?

问题描述

我正在尝试从带有 libgit2 的存储库中提取。

我的步骤是:

我使用 git_remote_fetch 来下载远程原始数据并返回 OK。

在我使用 git_merge API 之后。问题是两个用户修改同一个文件的同一个区域,libgit2会报内容冲突。此状态正常。

接下来我只是删除本地文件'a.txt',同时我只是修改远程分支文件'b.txt'。并在我的 git_checkout_options 中设置一个 notify_cb,并设置 notify_flags 以包含 GIT_CHECKOUT_NOTIFY_CONFLICT|GIT_CHECKOUT_NOTIFY_ALL。结果 git_merge 只返回错误代码是'-13',没有输出冲突文件名。合并失败时如何从通知回调中获取冲突文件名?

git_merge_options checkout_opt = GIT_CHECKOUT_OPTINS_INIT;
git_checkout_options checkout_opt = GIT_CHECKOUT_OPTIONS_INT;
checkout_opt.checkout_strategy = GIT_CHECKOUT_SAFE | GIT_CHECKOUT_ALLOW_CONFLICTS;
checkout_opt.notify_flags = GIT_CHECKOUT_NOTIFY_ALL | GIT_CHECKOUT_NOTIFY_CONFLICT;
checkout_opt.notify_cb = git_checkout_notify_cb // git_checkout_notify_cb is myself write callback.

int error = git_merge(repo, &their_head[0],1, &merge_opt, &checkout);
if(error<0)
{
   //Just output error code -13. no call notify callback.
}

标签: libgit2

解决方案


推荐阅读