在Python代码中使用Git命令
我被要求编写一个脚本,从Git中提取最新的代码,进行构建,并执行一些自动化的单元测试 我发现有两个内置的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
GitPython
和libgit2
我应该使用什么方法/模块?一个更简单的解决方案是使用Python
子流程
模块调用git。在您的情况下,这将获取最新的代码和构建:
import subprocess
subprocess.call(["git", "pull"])
subprocess.call(["make"])
subprocess.call(["make", "test"])
文件:
#!/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标签。请不要猜测这次行动的动机。