5

我是 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") 

没用。

还有其他解决方案吗?

4

3 回答 3

17

您可以定义一个允许您调用 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 repo 中,则会引发异常)。


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

于 2013-02-26T01:01:46.460 回答
3

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

于 2013-02-26T01:00:41.160 回答
1

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

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

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

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

于 2013-02-26T01:42:53.763 回答