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工作树的内容。