Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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
有没有办法用git用户名和密码通过python克隆(或下载)私有远程存储库?_Python_Git_Authentication_Gitpython - Fatal编程技术网

有没有办法用git用户名和密码通过python克隆(或下载)私有远程存储库?

有没有办法用git用户名和密码通过python克隆(或下载)私有远程存储库?,python,git,authentication,gitpython,Python,Git,Authentication,Gitpython,我正在寻找一种通过python在本地克隆远程私有git存储库的方法。Git,即不特定于版本控制提供程序。理想情况下,我希望使用凭据与远程repo(提供者)建立连接,然后克隆(模拟通过bash发生的情况)或下载repo。不过,这需要通过python脚本实现。凭据将作为控制台执行时的编码参数提供给脚本。 到目前为止,我所尝试的一切似乎都有一个怪癖,并不能完全解决这个问题 这篇文章似乎解决了克隆公共回购(GitPython)的问题: 在堆栈和GitPython文档中搜索,我还没有找到通过GitPyt

我正在寻找一种通过python在本地克隆远程私有git存储库的方法。Git,即不特定于版本控制提供程序。理想情况下,我希望使用凭据与远程repo(提供者)建立连接,然后克隆(模拟通过bash发生的情况)或下载repo。不过,这需要通过python脚本实现。凭据将作为控制台执行时的编码参数提供给脚本。 到目前为止,我所尝试的一切似乎都有一个怪癖,并不能完全解决这个问题

  • 这篇文章似乎解决了克隆公共回购(GitPython)的问题:
    在堆栈和GitPython文档中搜索,我还没有找到通过GitPython库设置身份验证凭据的方法。如果有人已经实现了这一点,将不胜感激

  • 此外,在过去,我实现了一个带有用户提示的版本,但仅针对GitHub,通过使用请求进行身份验证,然后下载远程repo的zip文件。我仍然可以使用它,只是为了github

    remoteReply = requests.get(remURL, timeout=20, auth=credentials)
    
  • 此外,我尝试了以下方法:
    这仍然只适用于github。我本来会尝试gitlab实现,但当用户密码包含@等特殊字符时,这会产生错误。有办法解决这个问题吗

最后,如果存在通过用户名和密码进行身份验证的方法,那么通过版本控制提供者的API实现是可行的。所有关于我的问题的信息都围绕着使用sha或令牌,这在我的情况下不是一个解决方案。

我觉得最简单的方法是使用SSH密钥,只需加载它们,然后进行克隆,忘记用户名和密码。如果必须使用用户名和密码,我认为您将不得不为每个主机提供程序构建一个实现,因为它们的实现方式都略有不同。@ElliotBlackburn这些也是我的想法……我刚刚发现它是以jgit的形式在Java中实现的,所以pythonI中没有类似的库似乎很奇怪。我觉得最简单的方法是使用SSH密钥,只需加载它们并进行克隆,然后忘记用户名和密码。如果您必须使用用户名和密码,我认为您必须根据主机提供程序构建一个实现,因为它们的实现方式略有不同。@ElliotBlackburn这些也是我的想法……我刚刚发现它是以jgit的形式在Java中实现的,所以python中没有类似的库似乎很奇怪