Вопрос по git, python – Используйте команды Git в коде Python

12

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

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

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

Ваш Ответ

4   ответа
3

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

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

Это также намного сложнее ...
GitPython не поддерживает рабочее дерево :(
12

средственного вызова 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!
-4

зачем вообще использовать python для этой задачи? Написать сценарий оболочки.

#!/bin/sh
set -e
git pull
make
./your_test #change this line to actually launch the thing that does your test
Может, спрашивающий хочет сделать что-то сложное с выводом? Но да, я склонен согласиться.
Что ж, в этом вопросе есть тег Python. Пожалуйста, не пытайтесь догадаться о мотивах ФП.
21

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

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

Docs:

subprocess - Python 2.x subprocess - Python 3.x

Похожие вопросы