2012-06-20 31 views
12

Tôi đã được yêu cầu viết một tập lệnh để lấy mã mới nhất từ ​​Git, tạo bản dựng và thực hiện một số kiểm tra đơn vị tự động.Sử dụng lệnh Git trong mã Python

Tôi thấy rằng có hai mô-đun Python tích hợp để tương tác với Git sẵn có: GitPythonlibgit2.

Tôi nên sử dụng phương pháp/mô-đun nào?

Trả lời

17

Một giải pháp dễ dàng hơn là sử dụng mô-đun Python subprocess để gọi git. Trong trường hợp của bạn, điều này sẽ kéo mã mới nhất và xây dựng:

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

Documents:

-2

Nếu bạn đang ở trên Linux hoặc Mac, sử dụng lý do tại sao python ở tất cả cho nhiệm vụ này? Viết kịch bản lệnh shell.

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

Có thể người hỏi muốn làm điều gì đó phức tạp với đầu ra? Nhưng vâng, tôi có xu hướng đồng ý. – aychedee

+4

Vâng, có thẻ Python trong câu hỏi. Vui lòng không đoán trước động cơ của OP. –

8

Tôi đồng ý với Ian Wetherbee. Bạn nên sử dụng subprocess để gọi git trực tiếp. Nếu bạn cần thực hiện một số logic về đầu ra của các lệnh thì bạn sẽ sử dụng định dạng cuộc gọi subprocess sau đây.

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

Trong EasyBuild, chúng tôi dựa vào GitPython và điều đó hoạt động tốt.

Xem here, để biết ví dụ về cách sử dụng.

+0

GitPython không hỗ trợ worktree: ( –

+0

Nó cũng phức tạp hơn nhiều ... – Fuhrmanator

Các vấn đề liên quan