如何在 libgit2 中获取失败的 switch 分支的文件名?
How to get the file name of the failed switch branch in libgit2?
我可以正常调用switch分支接口,但是当switch分支失败时,无法获取到当前分支失败的具体文件。查看错误信息只显示“one or multiple conflict prevents checkout”,如果想获取详细的错误文件名,如何从回调函数或return值中获取详细的错误信息? (还有include:Merge、重置...)
// code
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE;
git_branch_lookup(&lookup, repo, branchname, GIT_BRANCH_LOCAL);
git_revparse_single(&treeish, repo, branchbane);
if(git_checkout_tree(repo, treeish, &opts)<0)
{
/*
just return "1 conflict prevents checkout",
But I want to know which files is wrong
*/
const git_error* error = giterr_last();
}
我不太熟悉 libgit2
但看起来你必须手动解决冲突。您得到的错误:
1 conflict prevents checkout
告诉您有一个文件存在冲突,但您必须遍历树以找到并解决冲突。
status example from libgit2.org 对您来说肯定是一个很好的起点。
您需要设置 notify_cb
in your git_checkout_options
, and set your notify_flags
to include GIT_CHECKOUT_NOTIFY_CONFLICT
。
您提供的通知回调将通过您的工作目录中更改的文件被调用,并阻止签出发生。
我可以正常调用switch分支接口,但是当switch分支失败时,无法获取到当前分支失败的具体文件。查看错误信息只显示“one or multiple conflict prevents checkout”,如果想获取详细的错误文件名,如何从回调函数或return值中获取详细的错误信息? (还有include:Merge、重置...)
// code
git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE;
git_branch_lookup(&lookup, repo, branchname, GIT_BRANCH_LOCAL);
git_revparse_single(&treeish, repo, branchbane);
if(git_checkout_tree(repo, treeish, &opts)<0)
{
/*
just return "1 conflict prevents checkout",
But I want to know which files is wrong
*/
const git_error* error = giterr_last();
}
我不太熟悉 libgit2
但看起来你必须手动解决冲突。您得到的错误:
1 conflict prevents checkout
告诉您有一个文件存在冲突,但您必须遍历树以找到并解决冲突。
status example from libgit2.org 对您来说肯定是一个很好的起点。
您需要设置 notify_cb
in your git_checkout_options
, and set your notify_flags
to include GIT_CHECKOUT_NOTIFY_CONFLICT
。
您提供的通知回调将通过您的工作目录中更改的文件被调用,并阻止签出发生。