gitのポストレシーブによって返されるすべての行に表示される「リモート:」メッセージを取り除くにはどうすればよいですか?
-
02-10-2019 - |
質問
gitでレシーブ後のフックを作成しました。フック出力メッセージは画面に出力されます。画面は、プッシュを行うGITクライアントに送り返され、アウトプットされます。
出力のすべての行の前に「リモート:」テキストを取り除くにはどうすればよいですか?それはかなり気を散らしています。 (私はそれが実際にそれを見たので可能であることを知っています、私はそれがどのように行われているのかわからないだけです。)
解決
注:プレフィックスは、リモートシステムからのメッセージをローカルシステムからのメッセージと誤解しないようにするために重要です。
とはいえ、プレフィックスをオフにする方法はありませんが、それらはすべてstderrに書かれています。のstderrをリダイレクト/キャプチャ/フィルタリングできます Git Push あなたが望むことをするために。
大まかなやり方は次のようなものかもしれません:
git push ... 2>&1 | sed -e 's/^remote: //'
それはstdoutをパイプに送り、stderr gotoを同じ場所にします。パイプのもう一方の端で、 sed 組み合わせた出力を読み取り、削除します remote:
プレフィックス。私たちが見る可能性は低いので、これは大丈夫なはずです remote:
stdoutストリームのプレフィックス。このようなstdoutとstderrを組み合わせることは、一般的にインタラクティブな使用には受け入れられます(おそらく同じTTYデバイスに行く可能性が高いため)が、自動コンテキストでの使用については良い考えではないかもしれません(たとえばスクリプト)。
所属していません StackOverflow