Сбой команды git pull при запуске внутри скрипта python с использованием gitpython lib, но успешно выполняется при запуске напрямую через оболочку. - PullRequest
0 голосов
/ 12 ноября 2018

Я использую библиотеку gitpython для выполнения команд git из скрипта Python.

Когда я выполняю git pull, происходит сбой, выдавая следующую ошибку: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Однако, git pull успешно запускается, когда я запускаю его прямо из оболочки.Кроме того, все другие команды git, такие как git status, git log, работают нормально.ТОЛЬКО git pull / push выдает вышеуказанную ошибку.

Это скрипт python:

import os
import git
g = git.cmd.Git(local_repo_path)
os.chdir(local_repo_path)
g.checkout('master') // this works fine
msg = g.pull()
print msg // gives an error mentioned below

Вывод:

git.exc.GitCommandError: Cmd('git') failed due to: exit code(1)
  cmdline: git pull
  stderr: 'Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.'

В чем может быть причина?

1 Ответ

0 голосов
/ 13 ноября 2018

Проблема здесь заключалась в аутентификации пользователя. Shell использует глобальное имя пользователя git для аутентификации, так что это работает. Однако команды git скрипта python используют имя пользователя репо, которое не совпадает с ожидаемым именем пользователя git. Таким образом, установка имени пользователя явно для скрипта Python будет работать. В вашем местном git-репо,

Пробег: git config -e

Добавить в это:

[user]
name = yourname
email = youremail

Это позволит убедиться, что ваш скрипт Python использует эту информацию.

...