2012-06-20 11 views
12

Gitの最新コードを取得してビルドを行い、自動化されたユニットテストを行うスクリプトを書くように求められました。Pythonコード内でGitコマンドを使用する

すぐに利用できるGitと対話するためのPythonモジュールが2つあります:GitPythonlibgit2です。

どのアプローチ/モジュールを使用する必要がありますか?

答えて

17

もっと簡単な解決策は、Python subprocessモジュールを使用してgitを呼び出す方法です。あなたのケースでは、これは最新のコードを引っ張るとビルドになります。

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

ドキュメント:

-2

あなたは、LinuxやMac、なぜ使用にならpythonはこのタスクのためにまったくですか?シェルスクリプトを作成します。

#!/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

では、私たちはGitPythonに依存しており、うまくいきます。

使用方法の例については、hereを参照してください。

+0

GitPythonはworktreeをサポートしていません:( –

+0

これはもっと複雑です... – Fuhrmanator

関連する問題