在Python代码中使用Git命令

在Python代码中使用Git命令,python,git,Python,Git,我被要求编写一个脚本,从Git中提取最新的代码,进行构建,并执行一些自动化的单元测试 我发现有两个内置的Python模块可用于与Git交互,它们是现成的:GitPython和libgit2 我应该使用什么方法/模块?一个更简单的解决方案是使用Python子流程模块调用git。在您的情况下,这将获取最新的代码和构建: import subprocess subprocess.call(["git", "pull"]) subprocess.call(["make"]) subprocess.cal

我被要求编写一个脚本,从Git中提取最新的代码,进行构建,并执行一些自动化的单元测试

我发现有两个内置的Python模块可用于与Git交互,它们是现成的:
GitPython
libgit2


我应该使用什么方法/模块?

一个更简单的解决方案是使用Python
子流程
模块调用git。在您的情况下,这将获取最新的代码和构建:

import subprocess
subprocess.call(["git", "pull"])
subprocess.call(["make"])
subprocess.call(["make", "test"])
文件:


如果您在Linux或Mac上,为什么要使用python来完成此任务?编写一个shell脚本

#!/bin/sh
set -e
git pull
make
./your_test #change this line to actually launch the thing that does your test

我同意伊恩·韦瑟比的观点。您应该使用子流程直接调用git。如果需要对命令的输出执行一些逻辑,那么可以使用以下子流程调用格式

import subprocess
PIPE = subprocess.PIPE
branch = 'my_branch'

process = subprocess.Popen(['git', 'pull', branch], stdout=PIPE, stderr=PIPE)
stdoutput, stderroutput = process.communicate()

if 'fatal' in stdoutput:
    # Handle error case
else:
    # Success!
实际上,我们依赖于GitPython,这很好


有关如何使用它的示例,请参见。

因此,对于Python 3.5及更高版本,.call()方法已被弃用

当前推荐的方法是对子流程使用.run()方法

import subprocess
subprocess.run(["git", "pull"])
subprocess.run(["make"])
subprocess.run(["make", "test"])

当我去看文档时,上面的链接与公认的答案相矛盾,我不得不做一些研究。添加我的2美分,希望能为其他人节省一点时间。

如果GitPython包对您不起作用,还有PyGit和Dulwich包。这些可以通过pip轻松安装


但是,我个人刚刚使用了子流程调用。非常适合我需要的功能,这只是基本的git调用。对于更高级的东西,我推荐一个git包。

也许提问者想对输出做一些复杂的事情?但是,是的,我倾向于同意。嗯,问题中有Python标签。请不要猜测这次行动的动机。