2017-08-17 18 views
0

subprocessを使ってpythonスクリプトを作成し、コミットされた変更をリモートのgitリポジトリにプッシュします。 ファイルは本当にリモートリポジトリにプッシュされましたが、何らかの理由でプッシュ後に表示されるgitメッセージの最後の行だけを取得します。Git PushからPythonメッセージが完全に表示されない

ここでは、コードの関連する平和だ:

p = subprocess.Popen('git push --tag origin HEAD:develop' ,stdout=subprocess.PIPE,stderr=subprocess.STDOUT') 
     result = p.communicate()[0] 
     print ("Result from GIT: " + result) 

は、次のように出力されます

Result from GIT: To https://example.org/someUser/repo.git 
    fe4929f6..25bb62e9 HEAD -> develop 
* [new tag]   1.0.1.7 -> 1.0.1.7 

私は窓の端末からプッシュを作っているときに私が得るものです完全なメッセージは、ですが:

Counting objects: 25, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (23/23), done. 
Writing objects: 100% (25/25), 2.18 KiB | 0 bytes/s, done. 
Total 25 (delta 20), reused 0 (delta 0) 
To https://example.org/someUser/repo.git 
    828b9e31..249be2ba HEAD -> develop 

完全なメッセージを得る方法はありますか(スクリプトで印刷できるようになりますか)最後の行だけでなく?

はgitのを実行している場合、あなたは--progressフラグを追加する必要があります

+0

エラー出力をファイルにリダイレクトすると、同じ結果が返されます。 – coredump

答えて

2

ありがとうございます。 -q指定されていない限り、それは、端末に装着されたときにGitのマニュアルから

--progress

進捗状況は、デフォルトでは標準エラーストリームに報告されている(git help pushを実行します)。このフラグは、標準エラーストリームが端末に向けられていなくても進行状況を強制します。

次のようにこれはあなたのプログラムに統合することができます:gitのの人間が読める出力は将来変更される可能性として、このフラグを使用すると、難しいスクリプトの出力の解析を行うことができることを

p = subprocess.Popen('git push --progress --tag origin HEAD:develop' ,stdout=subprocess.PIPE,stderr=subprocess.STDOUT') 
    result = p.communicate()[0] 
    print ("Result from GIT: " + result) 

お知らせ警告なしでgitのリリース。 (--porcelainを使用して、あなたが尋ねたものとは逆に、常に機械可読出力を生成してください)

+0

シンプルなので、ありがとう。 – Noam

関連する問題