gpt4 book ai didi

c - 如何使用 libgit2 通过 ssh 推送 git 存储库

转载 作者:行者123 更新时间:2023-12-02 03:46:00 25 4
gpt4 key购买 nike

既然已经实现了ssh 支持,谁能告诉我如何编写push() 函数?我在通过本地文件系统推送时取得了一些成功,但是当我尝试 ssh 时,我只遇到了一个segfault

int cred_acquire_cb(git_cred** cred,const char* url,unsigned int allowed_types, void* payload){
check_error(git_cred_ssh_keyfile_passphrase_new(cred,"./bitbucket.pub","./bitbucket",NULL),"keyfile passphrase");
}

int main(int argc, const char *argv[])
{
char* repo_path="./hello/.git";
char* remote_name="origin";

git_repository* repo;
git_remote* remote;
git_push* push;
bool cred_acquire_called;
int error;

check_error(git_repository_open(&repo, repo_path),"open repo");
check_error(git_remote_load(&remote,repo,remote_name),"load a remote");
git_remote_set_cred_acquire_cb(remote, (git_cred_acquire_cb)cred_acquire_cb, &cred_acquire_called);
check_error(git_remote_connect(remote, GIT_DIRECTION_PUSH),"connect remote");
check_error(git_push_new(&push, remote),"new push object");
check_error(git_push_add_refspec(push,"refs/heads/master:refs/heads/master"),"add push refspec");

check_error(git_push_finish(push),"finish pushing");
check_error(git_push_unpack_ok(push),"unpacked OK? ");


git_push_free(push);
git_remote_free(remote);
git_repository_free(repo);

return 0;
}

我相信我做的不对,但我找不到任何例子来说明它是如何完成的。

更新: 好吧,我想我需要一些身份验证才能连接,所以我就这样结束了。这里没有段错误。我仍然在 git_remote_connect 上遇到错误:Early EOF。我做错了什么?

最佳答案

您的 cred_acquire_cb 函数未返回任何内容。这可能会导致问题。成功时应返回 0,错误时应返回 -1。

关于c - 如何使用 libgit2 通过 ssh 推送 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com