首次设置凭据 (libgit2)

setting credentials just for the first time (libgit2)

所以我使用一些 libgit2 函数连接到远程并执行 git 推送。我想推送到私有仓库,所以我必须设置凭据。

但是例如,当我通过 git 命令使用私人存储库并且我想第一次连接到这个存储库时,我输入凭据......但是在那之后,如果我想推送第二次,第三次左右,我不必再次编写该凭据,当我重新启动计算机时也是如此。在我看来,有些地方 "known repositories" 与他们的凭据一起存储。

我的问题是,有没有办法用 libgit2 做到这一点? 我的意思是,有没有办法在不设置凭据的情况下推送到 "known" 私有远程存储库? "Known" 表示我已经使用过的存储库,所以我已经设置了凭据

我想使用许多不同的存储库,每个存储库都有自己的凭据,所以我不想每次推送时都手动设置凭据。

当我在没有设置凭据的情况下执行推送(推送到 "known" 存储库)时,会显示此错误消息

请求失败,状态码:401

那有什么办法,每次push都不设置凭据吗?

命令行 git 有一组凭据帮助器,可使用本机平台 API 安全地存储凭据。 Mac 上有使用 Keychain 的凭据助手,Windows 上有 Windows Credential Manager,Linux 上有 gnome-keyring 和 libsecret。有关详细信息,请参阅 the chapter on credential helpers in the git book

Libgit2 没有类似的抽象来安全存储密码。也许应该。相反,您的应用程序可以调整不同的本机 API 来存储密码,然后根据用户名和主机名参数将它们提供给 libgit2 凭据回调。