Что означает термин "фарфор" в Git?

Термин "фарфор" иногда появляется в документации Git. Что это значит?

Ответ 1

"Фарфор" - это материал, из которого обычно изготавливаются туалеты (а иногда и другие приспособления, такие как умывальники). Это отличается от "сантехники" (фактических труб и стоков), где фарфор обеспечивает более удобный интерфейс для сантехники.

Git использует эту терминологию по аналогии, чтобы отделить команды низкого уровня, которые пользователям обычно не нужно использовать напрямую ( "сантехника" ) из более удобных для пользователя команд высокого уровня ( "фарфор" ).

Ответ 2

Что еще более важно, термин "фарфор" применяется к командам высокого уровня, с выводом:

  • предназначен для чтения человеком
  • не предназначен для анализа
  • подвержен изменениям/эволюции

Это ключевой момент: если вы пишете сценарий, вы должны использовать, если возможно, сантехнические команды со стабильными результатами. Не фарфоровые команды.

Тем не менее, вы можете использовать выходные данные команды фарфора, которая имеет параметр --porcelain в сценарии (см. Ниже), например:

git status --porcelain
git push --porcelain
git blame --porcelain

Хотя git включает в себя собственный слой фарфора, его команд низкого уровня достаточно для поддержки разработки альтернативных фарфоров.
Интерфейс (ввод, вывод, набор параметров и семантика) этих команд низкого уровня должен быть намного более стабильным, чем команды уровня фарфора, потому что эти команды в основном предназначены для использования по сценарию.
С другой стороны, интерфейс к командам Porcelain может быть изменен, чтобы улучшить взаимодействие с конечным пользователем.

См. " Как программно определить, есть ли незафиксированные изменения? " В качестве примера использования сантехнических команд вместо фарфоровых.


Примечание: команда фарфора может иметь --porcelain.
Например: git status --porcelain, который обозначает вывод, предназначенный для анализа.

--porcelain

Дайте вывод в простом для анализа формате для сценариев. Это похоже на короткий вывод, но останется стабильным во всех версиях git и независимо от конфигурации пользователя. Смотрите ниже для деталей.

В теме упомянутых выше деталей:

Это моя вина, в некоторой степени.
Форма "короткий статус" предназначена для глазных яблок человека и была разработана Junio.
Некоторые люди тоже хотели вывод состояния в сценариях, поэтому я --porcelain " --porcelain " в тот же формат, который отключает настраиваемые функции, такие как относительные имена путей и цветность, и дает неявное обещание, что мы не будем вносить дальнейшие изменения в формат,
Идея состояла в том, чтобы запретить людям --short сценарии вокруг --short, потому что он никогда не был предназначен для стабильности.
Так что да, хотя --porcelain сам по себе стабилен и пригоден для написания сценариев, он, возможно, не самый дружелюбный для анализаторов. Формат " -z --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

Новая опция делает исходный формат команды для вывода вывода, который легче обрабатывать с помощью фарфора.

Ответ 3

Чеканка и использование термина "фарфор" в git были на самом деле Майком Тахтом, в то время как в противном случае он проиграл горячую ссору с Линусом Торвальдсом.

http://www.gelato.unsw.edu.au/archives/git/0504/0881.html

  Фактически, одна из моих надежд заключалась в том, что другие SCM могли просто использовать git-сантехнику.
  Но тогда я действительно рекомендую использовать сам "git", а не "libgit". Т.е. вы воспринимаете всю сантехнику как настоящие программы, и вместо того, чтобы пытаться связать ее с отдельными подпрограммами, вы пишете сценарий.

Если ты не хочешь этого, я не буду этого делать.
Тем не менее, имеет смысл отделить сантехнику от фарфора, хотя.

Ответ 4

Porcelain - симпатичное имя для программ и программных наборов в зависимости от ядра git, представляющего высокий уровень доступа к ядру git. Porcelains больше демонстрируют интерфейс SCM, чем "сантехника".

- Фарфор, Git Wiki

Ответ 5

Команды фарфора предназначены для потребления человеком, в отличие от команд, выход которых легко обрабатывается компьютерами. git status будет одним из примеров.

Ответ 6

Ответ Грега Хьюглилла точно верен. Обратите внимание, что для Git доступны альтернативные фарфоры, включая Easy Git, yap, pyrite и vng. Каждый из них предназначен для того, чтобы сделать Git более легким для изучения/использования для некоторой части сообщества. Ссылки на все эти проекты находятся на странице Easy Git: http://people.gnome.org/~newren/eg/.

Ответ 7

Краткое и простое объяснение

  • Существует два типа команд: "Пореч" и "Сантехника".
  • На команды "Porcelain" не следует полагаться при программировании/написании сценариев: поскольку они могут измениться и предназначены для людей, а не для машин.
  • Команды "Сантехника" следует использовать для сценариев, поскольку они более стабильны и с меньшей вероятностью изменятся.

Но как насчет запутанной опции --porcelain??

  • Если вы хотите: (i) использовать фарфоровую команду И (ii) вы хотите гарантировать, что выходные данные могут быть надежно проанализированы (помните, фарфоровые команды предназначены только для людей, а не для анализа), тогда вы можете добавьте опцию --porcelain и затем используйте вывод для сценариев. По сути, авторы git неявно обещают не вносить никаких изменений в ближайшее время. пример: я могу использовать git status --porcelain и использовать вывод для сценариев, и это было бы совершенно нормально.

Откуда происходит терминология фарфора/сантехники?

  • Если английский не является вашим родным языком, Грег Хьюгилл объясняет это прекрасно.
  • Для более подробной информации, проверьте VonC ответ.

Ответ 8

Porcelain - симпатичное имя для программ и программных наборов в зависимости от ядра git, представляющего высокий уровень доступа к ядру git.

https://git.wiki.kernel.org/index.php/Porcelain

Ответ 9

В git есть два разных значения фарфора.

Эти два значения, хотя можно утверждать, что они не являются строго противоречивыми, могут показаться противоречивыми.

А. Концептуальная (сантехника против фарфора)

Официальная книга про Git:

Но поскольку Git изначально был набором инструментов для системы управления версиями, а не полностью удобной для пользователя VCS, он имеет ряд подкоманд, выполняющих низкоуровневую работу и предназначенных для объединения в стиле UNIX или вызова из сценариев. Эти команды обычно называются командами Gits 'plumbing', в то время как более удобные команды называются 'фарфоровыми' командами.

B. Опции --porcelain/=porcelain

Многие команды git поставляются с опцией --porcelain, которая предназначена для сценариев.

git status ' документация:

--porcelain[=<version>]

Дайте вывод в простом для анализа формате для сценариев. Это похоже на короткий вывод, но останется стабильным во всех версиях Git и независимо от конфигурации пользователя. Подробности смотрите ниже.

git diff документация:

--word-diff[=<mode>]

фарфора

      Используйте специальный линейный формат, предназначенный для использования скриптами.