git_remote_connect总是return错

git_remote_connect always return wrong

我是 libgit2 的新手。我的问题是关于git_remote_connect函数,这个问题困扰了我很多天。

当我使用git_remote_connect时,它总是return错误,消息是:This transport isn't implemented. Sorry

代码看起来像:

git_remote *remote = NULL;
git_remote_load(remote, git_repo, remote_name);

// output the correctly result, just like run: git remote -v
g_message("remote user:", git_remote_name(remote)); // github-username
g_message("remote url:", git_remote_url(remote)); // git@github.com/github-username/Repo

if (git_remote_connect(remote, GIT_DIRECTION_FETCH) < 0) {
    const git_error *e = giterr_last();
    g_error("connect wrong!\n"
            "message: %s",
            e->message);
}

编译时未包含您要求 libgit2 使用的协议。为需要的任何包安装开发 package/headers 并再次编译 libgit2。 cmake 的输出会告诉你发现了什么;请参阅库的自述文件。

顺便说一句,git@github.com/github-username/Repo 是一个本地路径,它总是可用的,所以这不太可能是 libgit2 试图使用的 URL。

您应该在 CMakeLists.txt

中启用 SSH
OPTION(USE_SSH              "Link with libssh2 to enable SSH support"        ON)