Что более важно, термин «фарфор» применяется к высокоуровневым командам с выводом:
- предназначено для чтения человеком
- не предназначен для анализа
- подвержен изменениям / эволюциям
Это ключ: если вы пишете сценарий, вы должны использовать, если это возможно, слесарное дело команды со стабильными выходными данными. Не фарфоровые команды.
Однако, вы можете использовать вывод команды фарфора, которая имеет параметр --porcelain
в сценарии (см. Ниже), например:
git status --porcelain
git push --porcelain
git blame --porcelain
Хотя git включает в себя собственный слой фарфора , его команд низкого уровня достаточно для поддержки разработки альтернативных фарфоров.
Интерфейс (ввод, вывод, набор опций и семантика) этих команд низкого уровня должен быть намного более стабильным , чем команды уровня фарфора, поскольку эти команды в основном предназначены для использования в сценариях. .
С другой стороны, интерфейс к командам Porcelain может быть изменен для улучшения взаимодействия с конечным пользователем.
См. " Как программно определить, есть ли незафиксированные изменения? " в качестве примера использования сантехнических команд вместо фарфоровых.
Примечание: команда фарфора может иметь опцию --porcelain
.
Например: git status --porcelain
, который обозначает выход, предназначенный для анализа .
--porcelain
Дайте вывод в простом для анализа формате для сценариев. Это похоже на короткий вывод, но останется стабильным во всех версиях git и независимо от конфигурации пользователя. Подробнее см. Ниже.
Тема упомянутых выше деталей:
Это моя вина, в некоторой степени.
Форма «короткий статус» - это , предназначенная для глазных яблок человека, и была разработана Junio.
Некоторые люди тоже хотели вывод состояния в сценариях, поэтому я добавил «--porcelain
» в тот же формат, который отключает настраиваемые функции, такие как относительные имена путей и цветность, и дает неявное обещание, что мы не будем вносить дальнейшие изменения в формат .
Идея состояла в том, чтобы запретить людям писать сценарии в районе --short
, потому что он никогда не должен был быть стабильным.
Так что да, хотя --porcelain
само по себе является стабильным и пригодным для сценариев, оно, возможно, не самое дружелюбное для анализаторов. Формат "-z --porcelain
" гораздо более полезен, и я бы порекомендовал его всем, кто пишет "git status"
Это отражает необходимость для пользователей git использовать фарфоровые команды в своих сценариях!
Но только со стабильным выходом (с --porcelain
)
Как прокомментировал Уильям-Берг , то же самое относится к git push
!
--porcelain
Создание машиночитаемого вывода.
Выходная строка состояния для каждой ссылки будет разделена табуляцией и отправлена на stdout
вместо stderr
.
Будут даны полные символические названия ссылок.
Как Джон Глассмайер предлагает в комментариях :
Возможно, значение --porcelain
здесь означает "производить продукцию, пригодную для потребления фарфоровыми сценариями" .
И это может быть поддержано самым первым случаем введения "--porcelain
option"
(до git status --porcelain
, коммит 6f15787, сентябрь 2009 г., git 1.7.0 ,
до git push --porcelain
, коммит 1965ff7, июнь 2009, git 1.6.4 ):
git blame --porcelain
-p
--porcelain
Показывать в формате, предназначенном для потребления машиной.
Commit b5c698d, октябрь 2006 г., git 1.4.4
Новая опция позволяет исходному формату команды генерировать вывод, который легче обрабатывать фарфором .