在Python中运行Git clone命令

时间:2013-02-26 00:52:42

标签: python git

我是Python和Git的新手。我正在编写一个Python脚本,它需要执行与在Linux服务器上从我的工作区运行下面的git命令所做的相同的操作。 (即/ local / mnt / workspace /)

git clone git://git.xyz.com/platform/manifest.git -b jb_2.5

我尝试使用Fab库但是没有安装模块fabric.api所以我无法继续。 另外,

import git
git.Git().clone("git://git.xyz.com/platform/manifest.git") 

没用。

还有其他解决办法吗?很感激帮助。感谢。

3 个答案:

答案 0 :(得分:13)

你可以定义一个允许你调用git的git函数。将用户限制为git命令对于安全目的很重要;否则要求使用git url并使用其他技术可能会导致数据丢失或其他恶意攻击。

import subprocess

def git(*args):
    return subprocess.check_call(['git'] + list(args))

# examples
git("status")
git("clone", "git://git.xyz.com/platform/manifest.git", "-b", "jb_2.5")

将其更改为subprocess.check_output可让您查看输出git打印,而不是确定成功(例如git("status")如果您不在git仓库中则会引发异常)。


旁注:请查看旨在帮助安装常用软件包的PIP

答案 1 :(得分:2)

您可以退出(通过os.systemsubprocess)或使用GitPython包。

答案 2 :(得分:0)

由于您没有显示错误超出“不起作用”的内容,因此很难猜出您的问题究竟是什么。

但我猜测问题是import git引发了ImportError,因为您从未安装过您尝试使用的git模块。

如果是这样,那么告诉你如何做git.Git().clone("git://git.xyz.com/platform/manifest.git")的完全相同的自述文件也会告诉你如何安装它。

但最有可能的是,您需要的只是pip install pygit2pip install GitPython之类的东西。 (您可能需要sudo,您可能需要先安装pip才能使用它,等等,但由于我们对您的平台或您的知识水平一无所知,因此无法猜测正是你需要的。)