Что означает термин "фарфор" в 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>]
фарфора
Используйте специальный линейный формат, предназначенный для использования скриптами.