Python的方式来克隆一个Git仓库

有没有使用一个subprocess克隆git仓库的Python方式? 我可以使用任何你推荐的模块。

http://gitorious.org/git-python/ 。 以前和内部没有听说过,它依赖于git可执行文件的某处; 此外,他们可能有很多的错误。 但是值得一试。

如何克隆:

 import git git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git") 

(这不是很好,我不知道这是否是支持的方式,但它的工作。)

使用GitPython会为你提供一个很好的Git接口。

例如,安装后( pip install gitpython ),克隆一个新的仓库,你可以使用clone_from函数:

 from git import Repo Repo.clone_from(git_url, repo_dir) 

注意: GitPython需要在系统上安装git,并可以通过系统的PATH进行访问。

Github的libgit2绑定, pygit2提供了一个单线程克隆的远程目录:

 clone_repository(url, path, bare=False, repository=None, remote=None, checkout_branch=None, callbacks=None) 

我的解决scheme非常简单直接。 它甚至不需要手动input释义/密码。

这是我的完整代码:

 import os import sys path = "/path/to/store/your/cloned/project" clone = "git clone gitolite@10.10.10.55:/your/project/name.git" os.system("sshpass -p your_password ssh user_name@your_localhost") os.chdir(path) # Specifying the path where the cloned project has to be copied os.system(clone) # Cloning print "\n CLONED SUCCESSFULLY.! \n" 

用德威小费,你应该可以做到:

 from dulwich.repo import Repo Repo("/path/to/source").clone("/path/to/target") 

这仍然是非常基本的 – 它复制对象和引用,但是如果你创build一个非裸存储库,它还没有创build工作树的内容。