Подтвердить что ты не робот

Используйте команды Git в коде Python.

Мне было предложено написать script, который извлекает последний код из Git, создает сборку и выполняет некоторые автоматические модульные тесты.

Я обнаружил, что есть два встроенных модуля Python для взаимодействия с Git, которые легко доступны: GitPython и libgit2.

Какой подход/модуль следует использовать?

4b9b3361

Ответ 1

Более простым решением было бы использовать модуль Python subprocess для вызова git. В вашем случае это выведет последний код и построит:

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

Docs:

Ответ 2

Я согласен с Яном Уэтербием. Вы должны использовать подпроцесс для прямого вызова 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!

Ответ 3

В EasyBuild мы полагаемся на GitPython, и это отлично работает.

См. здесь, например, как его использовать.

Ответ 4

Если вы работаете на Linux или Mac, зачем вообще использовать python для этой задачи? Напишите оболочку script.

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