Gitの最新コードを取得してビルドを行い、自動化されたユニットテストを行うスクリプトを書くように求められました。Pythonコード内でGitコマンドを使用する
すぐに利用できるGitと対話するためのPythonモジュールが2つあります:GitPython
とlibgit2
です。
どのアプローチ/モジュールを使用する必要がありますか?
Gitの最新コードを取得してビルドを行い、自動化されたユニットテストを行うスクリプトを書くように求められました。Pythonコード内でGitコマンドを使用する
すぐに利用できるGitと対話するためのPythonモジュールが2つあります:GitPython
とlibgit2
です。
どのアプローチ/モジュールを使用する必要がありますか?
もっと簡単な解決策は、Python subprocess
モジュールを使用してgitを呼び出す方法です。あなたのケースでは、これは最新のコードを引っ張るとビルドになります。
import subprocess
subprocess.call(["git", "pull"])
subprocess.call(["make"])
subprocess.call(["make", "test"])
ドキュメント:
あなたは、LinuxやMac、なぜ使用にならpythonはこのタスクのためにまったくですか?シェルスクリプトを作成します。
#!/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に依存しており、うまくいきます。
使用方法の例については、hereを参照してください。
GitPythonはworktreeをサポートしていません:( –
これはもっと複雑です... – Fuhrmanator
多分、質問者は出力と何か複雑にしたいですか?しかし、ええ、私は同意する傾向があります。 – aychedee
さて、質問にはPythonタグがあります。 OPの動機を第二に推測しないでください。 –