Аутентификация в gitpython

Я пытаюсь написать довольно простую функцию (я думал).

Я хочу, чтобы пользователь указал путь к проверенному репозиторию git на своем компьютере. (Репозиторий git, требующий аутентификации).

Затем я хочу выполнить git pull для этой папки, чтобы получить любые изменения.

Мой код выглядит так:

    import git
    repo=git.cmd.Git(GIT_PATH)
    repo.pull()

Это отлично работает на моем компьютере с Linux, он никогда не запрашивает никаких учетных данных (я предполагаю, что ssh-agent уже разблокировал ключ и предоставляет учетные данные, когда они нужны моему сценарию).

Однако в Windows я не могу заставить его работать. Я установил замазку и добавил ключ к конкурсу. Я могу проверить репозиторий, например, с помощью TortoiseGit, и он отлично работает, но если я выполню приведенный выше код на компьютере с Windows, я получу:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    repo = git.repo.base.Repo.clone_from(GIT_PATH, "t
mp")
  File "C:\Python34\lib\site-packages\git\repo\base.py", line 849, in clone_from

   return cls._clone(Git(os.getcwd()), url, to_path, GitCmdObjectDB, progress,
**kwargs)
  File "C:\Python34\lib\site-packages\git\repo\base.py", line 800, in _clone
    finalize_process(proc)
  File "C:\Python34\lib\site-packages\git\util.py", line 154, in finalize_proces
s
    proc.wait()
  File "C:\Python34\lib\site-packages\git\cmd.py", line 309, in wait
    raise GitCommandError(self.args, status, self.proc.stderr.read())
git.exc.GitCommandError: 'git clone -v ssh://[email protected]/repo tmp' re
turned with exit code 128
stderr: 'Cloning into 'tmp'...
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

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

Изменить: я хотел бы добавить, что я не женат на GitPython. Если кто-нибудь знает другую библиотеку, которая решит мою проблему, это тоже сработает.


person pskaa    schedule 26.10.2015    source источник
comment
Одинаков ли ваш открытый ключ в Windows и Linux? Доступен ли он из python (правильные разрешения)   -  person Cyrbil    schedule 26.10.2015
comment
Да, это тот самый ключ. Я предполагаю, что у меня проблемы с доступностью из части python. Я не знаю, как я могу сделать его более доступным в Windows, кроме как импортировать его в конкурс.   -  person pskaa    schedule 26.10.2015
comment
попробуйте прочитать ключ в оболочке Python. print open('mykey.pub').read(). Чтобы узнать, достаточно ли у вас разрешений.   -  person Cyrbil    schedule 26.10.2015
comment
Вы имеете в виду закрытый ключ, верно? Я имею в виду, что это то, что мне нужно предоставить. Во всяком случае, я могу открыть и прочитать этот файл   -  person pskaa    schedule 26.10.2015
comment
Убедитесь, что ваш ключ правильно установлен? ssh -vvT git@git   -  person Cyrbil    schedule 26.10.2015
comment
Думаю, это часть моей проблемы. На компьютерах с Windows нет команды SSH. Шпатлевка и ее зрелище - это все, что у них есть. Но если я использую клиент Git, например TortoiseGit, я могу проверить репозиторий git с помощью ключа.   -  person pskaa    schedule 26.10.2015
comment
Кажется, что gitpython находит двоичный файл git (вывод, который вы видите, исходит от git). Из того, что я видел, для его получения используется переменная среды GIT_PYTHON_GIT_EXECUTABLE. Вы можете получить двоичный файл, используемый gitpython, с помощью repo.GIT_PYTHON_GIT_EXECUTABLE. Также обратите внимание, что в Windows может потребоваться настройка git.Git.USE_SHELL=True   -  person Cyrbil    schedule 26.10.2015