Используйте команды Git в коде Python.
Мне было предложено написать script, который извлекает последний код из Git, создает сборку и выполняет некоторые автоматические модульные тесты.
Я обнаружил, что есть два встроенных модуля Python для взаимодействия с Git, которые легко доступны: GitPython
и libgit2
.
Какой подход/модуль следует использовать?
Ответы
Ответ 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