#git #ssh #libgit2 #pygit2
#git #ssh #libgit2 #pygit2
Вопрос:
Я пытаюсь выполнить отправку по ssh в репозиторий github с использованием pygit2. Вот ошибка, которую я продолжаю получать.
Можете ли вы указать на ошибку?
>>> sshcred = repo_.pygit2.credentials.Keypair('avckp','id_rsa.pub','id_rsa','')
>>> remo2.credentials=sshcred
## remo2 is a remote object for the repo
>>> remo2.url
u'https://github.com/avckp/sansa-pygit.git'
>>> remo2.push_url = remo2.url
>>> remo2.push('refs/heads/master')
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "pygit2/remote.py", line 301, in push
check_error(err)
File "pygit2/errors.py", line 57, in check_error
raise GitError(message)
GitError: HTTP parser error: the on_headers_complete callback failed
Комментарии:
1. Почему вы присваиваете
remo2.push_url
самому себе?2. это опечатка. это remo2.push_url = remo2.url
3. Спасибо, что указали. Только что сделал.
4. Вы пытаетесь выполнить отправку не по ssh, а по HTTP.
5. Это один из способов запуска некоторых URL-адресов ssh, но вам просто нужно посмотреть на схему, которая должна быть
ssh://
(или использовать scp-стильuser@host:path
).). Кроме того, попытка аутентификации от имени useavckp
на GitHub не увенчается успехом, поскольку у них нет системного пользователя.git@
Часть, на которую вы ссылаетесь, — это имя пользователя, которое вы заменяете на непригодное в вашем примере.
Ответ №1:
Имя пользователя в паре ключей должно быть ‘git’, как сказано в # 428.
Это должно быть:
sshcred = repo_.pygit2.credentials.Keypair('git','/path/to/id_rsa.pub','/path/to/id_rsa','')
remo.crendentals = sshcred
Затем попробуйте выполнить отправку еще раз.