2016-06-01 3 views
1

СообщениеПочему «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, ничего не печатается.

ответ

1

Это не ограничивается подмодулям, а noted here:

Регистрация субмодуля будет сообщено STDERR, поскольку это согласуется с остальной отчетности по прогрессу в Git.

Это помогает нам в более позднем пластыря, когда мы хотим повторно использовать init_submodule function в update_clone которого стандартный вывод будет поступать раскошелиться, который считывает параметры от STDOUT в очень специфическим образом.

Вы можете увидеть также в this recent patch:

Перенаправить вывод на стандартный вывод в STDERR, как это информативный сообщения, не потребляться машинами.

Мы хотим, чтобы инициализировать подмодули из помощника для submodule update в поздних патчах и выходной стандартный вывод упомянутого помощник потребляется по частям submodule update, которые все еще написаны в скорлупе.

Итак, мы должны быть осторожны, какие сообщения находятся на стандартном выводе.

+0

Удивлены, что они не думали добавить флаг для машиносчитываемого вывода ... – aleclarson

+0

Автоматически читаемый вывод @aleclarson является значением по умолчанию в Git и переходит в стандартный вывод. Все остальное идет в stderr. – VonC

+0

Возможно, но я предпочел бы подход 'git status' с его флагом' --porcelain' вместо того, чтобы злоупотреблять stderr. Но, возможно, это только я. – aleclarson

Смежные вопросы