/ / Como defino credenciais ssh para libgit2 / libssh2? - git, libgit2, libssh2, pygit2

Como defino credenciais ssh para libgit2 / libssh2? - git, libgit2, libssh2, pygit2

Eu estou tentando empurrar referências de dentro pygit2/libgit2:

    push_refspec = git_repo.lookup_reference("HEAD").resolve().name
logger.info("Pushing " + push_refspec)
git_remote.push(push_refspec)

No entanto, recebo um erro sobre credenciais ausentes:

    _pygit2.GitError: Cannot set up SSH connection without credentials

Isso finalmente vem de libssh2 através de uma chamada de libgit2 (transports/ssh.c):

if (user && pass) {
if (git_cred_userpass_plaintext_new(&t->cred, user, pass) < 0)
goto on_error;
} else if (t->owner->cred_acquire_cb) {
if (t->owner->cred_acquire_cb(
&t->cred, t->owner->url, user,
GIT_CREDTYPE_USERPASS_PLAINTEXT |
GIT_CREDTYPE_SSH_KEY |
GIT_CREDTYPE_SSH_CUSTOM,
t->owner->cred_acquire_payload) < 0)
goto on_error;

if (!t->cred) {
giterr_set(GITERR_SSH, "Callback failed to initialize SSH credentials");
goto on_error;
}
} else {
giterr_set(GITERR_SSH, "Cannot set up SSH connection without credentials");
goto on_error;
}

UMA push do repositório usando o cliente Git funciona muito bem. eu tentei GIT_SSL_NO_VERIFY=true que (sem surpresa) não funcionou.

Quais informações extras eu preciso definir para que isso funcione?

Respostas:

4 para resposta № 1

Parece que o pygit2 ainda não suporta as operações de rede credenciada da libgit2. Há alguma discussão API acontecendo, mas nada é finalizado.

EDITAR: Parece que isso foi implementado desde que essa resposta foi aceita. o documentação tem algumas notas sobre isso.