我被要求編寫一個腳本,它從Git中提取最新的代碼,進行構建並執行一些自動化的單元測試。在Python代碼中使用Git命令
我發現有兩個內置Python模塊用於與Git進行交互,這些模塊隨時可用:GitPython
和libgit2
。
我應該使用什麼方法/模塊?
我被要求編寫一個腳本,它從Git中提取最新的代碼,進行構建並執行一些自動化的單元測試。在Python代碼中使用Git命令
我發現有兩個內置Python模塊用於與Git進行交互,這些模塊隨時可用:GitPython
和libgit2
。
我應該使用什麼方法/模塊?
更簡單的解決方案是使用Python subprocess
模塊來調用git。在你的情況,這將拉動最新的代碼,並建立:
import subprocess
subprocess.call(["git", "pull"])
subprocess.call(["make"])
subprocess.call(["make", "test"])
文檔:
如果你在Linux或Mac,爲什麼使用蟒蛇在這一切的任務?編寫一個shell腳本。
#!/bin/sh
set -e
git pull
make
./your_test #change this line to actually launch the thing that does your test
我同意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!
GitPython不支持工作樹:( –
它也複雜得多... – Fuhrmanator
也許提問者想要做一些複雜的輸出?但是,我傾向於同意。 – aychedee
嗯,問題中有Python標籤。請不要再次猜測OP的動機。 –