Я пытаюсь написать довольно простую функцию (я думал).
Я хочу, чтобы пользователь указал путь к проверенному репозиторию 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. Если кто-нибудь знает другую библиотеку, которая решит мою проблему, это тоже сработает.
print open('mykey.pub').read()
. Чтобы узнать, достаточно ли у вас разрешений. - person Cyrbil   schedule 26.10.2015ssh -vvT git@git
- person Cyrbil   schedule 26.10.2015GIT_PYTHON_GIT_EXECUTABLE
. Вы можете получить двоичный файл, используемый gitpython, с помощьюrepo.GIT_PYTHON_GIT_EXECUTABLE
. Также обратите внимание, что в Windows может потребоваться настройкаgit.Git.USE_SHELL=True
а> - person Cyrbil   schedule 26.10.2015