2012-06-20 80 views
12

我被要求編寫一個腳本,它從Git中提取最新的代碼,進行構建並執行一些自動化的單元測試。在Python代碼中使用Git命令

我發現有兩個內置Python模塊用於與Git進行交互,這些模塊隨時可用:GitPythonlibgit2

我應該使用什麼方法/模塊?

回答

17

更簡單的解決方案是使用Python subprocess模塊來調用git。在你的情況,這將拉動最新的代碼,並建立:

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

文檔:

-2

如果你在Linux或Mac,爲什麼使用蟒蛇在這一切的任務?編寫一個shell腳本。

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

也許提問者想要做一些複雜的輸出?但是,我傾向於同意。 – aychedee

+4

嗯,問題中有Python標籤。請不要再次猜測OP的動機。 –

8

我同意Ian Wetherbee。您應該使用子進程直接調用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,這是很好的工作。

有關如何使用它的示例,請參閱here

+0

GitPython不支持工作樹:( –

+0

它也複雜得多... – Fuhrmanator