Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gitpython中的身份验证_Python_Git_Putty_Gitpython_Pageant - Fatal编程技术网

gitpython中的身份验证

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上,我无法让它工作。我已经安装了油灰,并将钥匙添加到了选美比

我想写一个相当简单的函数

我希望用户指定其计算机上已签出git回购的路径。(需要身份验证的git回购协议)

然后我想对该文件夹进行git拉取以获取任何更改

我的代码如下所示:

    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