СообщениеПочему «git subodule add ...» пишет stderr, а не stdout?
Cloning into 'sub-mod'...
done.
после команды git submodule add...
записывается STDERR. Я ожидал, что сообщение будет записано в 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
, ничего не печатается.
Удивлены, что они не думали добавить флаг для машиносчитываемого вывода ... – aleclarson
Автоматически читаемый вывод @aleclarson является значением по умолчанию в Git и переходит в стандартный вывод. Все остальное идет в stderr. – VonC
Возможно, но я предпочел бы подход 'git status' с его флагом' --porcelain' вместо того, чтобы злоупотреблять stderr. Но, возможно, это только я. – aleclarson