Ответы:
«Фарфор» - это материал, из которого обычно делаются туалеты (а иногда и другие приспособления, такие как раковины). Это отличается от «сантехники» (настоящие трубы и стоки), где фарфор обеспечивает более удобный интерфейс для сантехники.
Git использует эту терминологию по аналогии, чтобы отделить низкоуровневые команды, которые обычно не нужны пользователям («сантехника»), от более удобных для пользователя высокоуровневых команд («фарфор»).
Что еще более важно, термин «фарфор» применяется к командам высокого уровня , с выводом:
Это ключевой момент: если вы пишете сценарий, вы должны использовать, если возможно, сантехнические команды со стабильными выходными данными. Не фарфоровые команды.
Однако вы можете использовать вывод команды фарфора, которая имеет --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
, commit 6f15787, сентябрь 2009 г., git 1.7.0 ,
до git push --porcelain
, коммит 1965ff7, июнь 2009 г., git 1.6.4 ):
-p
--porcelain
Показывать в формате, предназначенном для машинного потребления.
Commit b5c698d, октябрь 2006 г., git 1.4.4
Новая опция позволяет исходному формату команды генерировать выходные данные, которые легче обрабатывать с помощью фарфора .
git push
имеет аналогично аномальный машиночитаемый --porcelain
.
--porcelain
здесь - «производить продукцию, пригодную для потребления фарфоровыми сценариями».
git diff-tree --word-diff=porcelain
Чеканка и использование термина «фарфор» в git были на самом деле Майком Тахтом, в то время как в противном случае он проиграл горячую ссору с Линусом Торвальдсом.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
Фактически, одна из моих надежд заключалась в том, что другие SCM могли просто использовать git-сантехнику.
Но тогда я бы действительно предложил вам использовать "git", а не "libgit
". Т.е. вы воспринимаете всю сантехнику как настоящие программы, и вместо того, чтобы пытаться связать отдельные подпрограммы, вы пишете сценарий .Если ты этого не хочешь, я этого не сделаю.
Тем не менее имеет смысл отделить сантехнику от фарфора , хотя.
Porcelain - это симпатичное название для программ и наборов программ в зависимости от ядра git, обеспечивающее высокий уровень доступа к ядру git. Porcelains раскрывают больше интерфейса SCM, чем «водопровод».
Фарфоровые команды предназначены для потребления человеком, в отличие от команд, вывод которых легко анализировать на компьютерах. git status
был бы один пример.
--porcelain
опцию, они предназначены для потребления машиной.
git status --porcelain
: Предоставить вывод в простом для анализа формате для сценариев. (...) но останется стабильным во всех версиях Git и независимо от конфигурации пользователя.
git status --porcelain
имеет стабильный формат, который можно анализировать, но сама status
команда предназначена для работы с пользователем (в отличие, например, от git ls-files
).
--porcelain
варианта !?--porcelain
опцию и затем использовать вывод для сценариев. По сути, авторы git неявно обещают не вносить никаких изменений в ближайшее время. пример: я могу использовать git status --porcelain
и использовать вывод для сценариев, и это было бы совершенно нормально.For more detail, checkout VonC's answer.
--porcelain
в уже «фарфоровых» командах, для достижения «псевдо-слесарной» функциональности очень хорошо сочетается с общим дизайном пользовательского интерфейса Git ...;)
--plumbing
(поскольку на этот раз вы сантехник, а не обычный "фарфоровый" пользователь).
Ответ Грега Хьюгилла в точности правильный. Обратите внимание, что для Git доступны альтернативные фарфора, включая Easy Git, yap, pyrite и vng. Каждый из них предназначен для облегчения изучения / использования Git для некоторой части сообщества. Ссылки на все эти проекты находятся на странице Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelain - это симпатичное название для программ и наборов программ в зависимости от ядра git, обеспечивающее высокий уровень доступа к ядру git.
В git есть два разных значения фарфора.
Эти два значения, хотя можно утверждать, что они не являются строго противоречивыми, могут показаться противоречивыми.
Официальная книга про Git :
Но поскольку Git изначально был набором инструментов для системы управления версиями, а не полностью удобной для пользователя VCS, он имеет ряд подкоманд, выполняющих низкоуровневую работу и предназначенных для объединения в единый стиль UNIX или вызова из сценариев. Эти команды обычно называются командами Git «слесарное дело», в то время как более удобные команды называются «фарфоровые» команды.
--porcelain
/ =porcelain
вариантыМногие команды Git поставляются с --porcelain
опцией , которая является предназначенной для написания сценариев.
git status
" Документация :
--porcelain[=<version>]
Дайте вывод в простом для анализа формате для сценариев. Это похоже на короткий вывод, но останется стабильным во всех версиях Git и независимо от конфигурации пользователя. Смотрите ниже для деталей.
git diff
«S документация :
--word-diff[=<mode>]
фарфор
Используйте специальный линейный формат, предназначенный для использования скриптами.