gitコマンドを呼び出すスクリプトをいくつか書いていますが、gitがユーザ入力をブロックするページャを使って出力しようとすると問題が発生します。たとえば、次はless
で私をドロップ(私の知る限り)と私は継続するq
にありますPythonのサブプロセスを使ったページャの処理
subprocess.Popen(['git', '--no-pager', 'diff', '--stat', '--cached', 'origin/master']).wait()
:私はgitのを伝えることでページャを使用しないことを無効にすることができ
subprocess.Popen(['git', 'diff', '--stat', '--cached', 'origin/master']).wait()
をこの特定のケースではいくつかの一般的な解決策がありますか(編集:つまり、それはすべてのためだけではなく、git
)、私は出力をキャプチャすることができ、ページャではブロックできませんか、またはサブプロセスこの場合)ページャを自動的に使用しないようにしますか?
私はサブプロセスのstdinを閉じて、shell=True/False
引数で試してみましたが、助けにはなりませんでした。
更新:
例えば出力が長いページを超える場合、 git diff --stat --cached origin/master
はページャであなたを着陸する予定。 git diff --stat --cached origin/master | cat
はしません。 gitはどうやって知っていますか?サブプロセスを使用してこの同じ効果を適用するにはどうすればよいですか?
'--no-pager'は 'less'を使用しないでください。 gitの最新バージョンを使用していますか?あなたのgitコマンドは2.9.0でうまく動作します(lessなしで) –
@MauriceMeyerはい、gitで動作します。しかし、私は、ページャを自動的に使用しようとする可能性のあるプログラムの一般的な解決策の後にいます。 – jozxyqk