gitpython中的身份验证
我想写一个相当简单的函数 我希望用户指定其计算机上已签出git回购的路径。(需要身份验证的git回购协议) 然后我想对该文件夹进行git拉取以获取任何更改 我的代码如下所示:gitpython中的身份验证,python,git,putty,gitpython,pageant,Python,Git,Putty,Gitpython,Pageant,我想写一个相当简单的函数 我希望用户指定其计算机上已签出git回购的路径。(需要身份验证的git回购协议) 然后我想对该文件夹进行git拉取以获取任何更改 我的代码如下所示: import git repo=git.cmd.Git(GIT_PATH) repo.pull() 这在我的Linux机器上非常有效,它从不要求任何凭据(我猜是因为ssh代理已经解锁了密钥,并在脚本需要时提供凭据) 然而,在Windows上,我无法让它工作。我已经安装了油灰,并将钥匙添加到了选美比
import git
repo=git.cmd.Git(GIT_PATH)
repo.pull()
这在我的Linux机器上非常有效,它从不要求任何凭据(我猜是因为ssh代理已经解锁了密钥,并在脚本需要时提供凭据)
然而,在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://git@git.path/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.
回溯(最近一次呼叫最后一次):
文件“test.py”,第2行,在
repo=git.repo.base.repo.clone\u from(git\u路径,“t
“议员”)
文件“C:\Python34\lib\site packages\git\repo\base.py”,第849行,位于从
返回cls.\u克隆(Git(os.getcwd())、url、路径、GitCmdObjectDB、进度、,
**kwargs)
文件“C:\Python34\lib\site packages\git\repo\base.py”,第800行,在克隆中
最终确定流程(proc)
文件“C:\Python34\lib\site packages\git\util.py”,第154行,在finalize\u过程中
s
进程等待()
文件“C:\Python34\lib\site packages\git\cmd.py”,第309行,正在等待
引发GitCommandError(self.args、status、self.proc.stderr.read())
git.exc.gitcomandError:'git clone-vssh://git@git.path/repo tmp're
出口代码为128
stderr:'克隆到'tmp'。。。
权限被拒绝,请重试。
权限被拒绝,请重试。
权限被拒绝(公钥、密码)。
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限
并且存储库存在。
编辑:我想补充一点,我没有嫁给GitPython。如果有人知道另一个库可以解决我的问题,那也行。您的公钥在windows和linux上是否相同?它是否可以从python访问(正确的perms)是的,它是相同的键。我想“是否可以从python访问”部分就是我遇到的问题。除了将其导入PageAnt,我不知道如何使其在Windows中更易于访问尝试在python shell中读取密钥<代码>打印打开('mykey.pub').read()。看看你是否有足够的权限。你是说私钥,对吗?我的意思是这就是我需要提供的。无论如何,我能够打开并读取该文件确保您的密钥安装正确<代码>ssh-vvTgit@gitwindows和linux上的公钥是否相同?它是否可以从python访问(正确的perms)是的,它是相同的键。我想“是否可以从python访问”部分就是我遇到的问题。除了将其导入PageAnt,我不知道如何使其在Windows中更易于访问尝试在python shell中读取密钥<代码>打印打开('mykey.pub').read()。看看你是否有足够的权限。你是说私钥,对吗?我的意思是这就是我需要提供的。无论如何,我能够打开并读取该文件确保您的密钥安装正确<代码>ssh-vvTgit@git