2016-06-01 4 views
1

メッセージなぜ "git submodule add ..."はstdoutではなくstderrに書き込むのですか?

Cloning into 'sub-mod'... 
done. 

git submodule add...コマンドが標準エラーに書き込まれた後。私はメッセージがstdoutに書き込まれることを期待していました。なぜなら、コマンドで何か問題が生じたとは思わないからです。私は、次のコマンドシーケンスでこれを再現することができ

rm -rf /tmp/repo /tmp/module 
mkdir /tmp/repo /tmp/module 

cd /tmp/module 

git init > /dev/null 
echo "foo" > foo; 
git add foo > /dev/null 
git commit . -m "+ foo" > /dev/null 


cd /tmp/repo 

git init > /dev/null 
git submodule add /tmp/module/ sub-mod 1> /dev/null 

私は... 2> /dev/nullに最後のコマンドでリダイレクトを変更する場合は、何も印刷されません。

答えて

1

これは、サブモジュールに限定されるものではなく、noted hereとして:それは進行中の残りの部分はGitの内の報告と一致 あるよう

サブモジュールの登録は、stderrに報告されます。

我々はその標準出力に非常に特定の方法で標準出力オフパラメータを読み取るシェルに をパイプされますupdate_cloneinit_submodule functionを再利用したい場合には、後のパッチで私たちを助けます。

あなたはthis recent patchでも、それを見ることができます。

リルートstderrに標準出力の出力、マシンによって消費されるだけでなく、有益な メッセージ、あるとして。

我々は、後でパッチやヘルパーがまだシェルで書かれているsubmodule updateの部分で を消費されたのSTDOUT出力にsubmodule update のヘルパーからサブモジュールを初期化します。

メッセージがstdoutにあるように注意する必要があります。

+0

驚いたことに、彼らは機械可読出力のためのフラグを追加するとは思わなかった... – aleclarson

+0

@aleclarson機械可読の出力はGitのデフォルトであり、stdoutに行く。他のものは標準エラー出力に行きます。 – VonC

+0

おそらく、私はstderrを乱用するのではなく、 ' - porcelain'フラグを使って' git status'の方法を好むでしょう。しかし、多分それは私だけです。 – aleclarson

関連する問題