Відповіді:
"Порцеляна" - це матеріал, з якого зазвичай виготовляються унітази (а іноді й інші світильники, такі як умивальники). Це відрізняється від "сантехніки" (власне труби та каналізації), де порцеляна забезпечує більш зручний інтерфейс для сантехніки.
Git використовує цю термінологію аналогічно, щоб відокремити команди низького рівня, якими користувачі, як правило, не повинні користуватися безпосередньо ("сантехніка") від більш зручних команд високого рівня ("фарфор").
Що ще важливіше, термін "порцеляна" застосовується до команд високого рівня , з виходом:
Це головне: якщо ви сценарій, ви повинні використовувати по можливості сантехнічні команди зі стабільними виходами. Не порцелянові команди.
Однак ви можете використовувати вихід порцелянової команди, яка має --porcelain
параметр у сценарії (див. Нижче), наприклад:
git status --porcelain
git push --porcelain
git blame --porcelain
Хоча git включає свій власний шар порцеляни , його команди низького рівня є достатніми для підтримки розвитку альтернативних порцеляни.
Інтерфейс (введення, вихід, набір опцій та семантика) цих команд низького рівня повинен бути набагато стабільнішим, ніж команди рівня порцелянового рівня, оскільки ці команди в основному призначені для сценаріїв .
З іншого боку, інтерфейс порцелянових команд може бути змінений, щоб покращити якість роботи кінцевого користувача.
Див. " Як я програмно визначити, чи немає змін? ", Як приклад використання сантехнічних команд замість порцелянових.
Примітка: Порцелянова команда може мати --porcelain
опцію.
Наприклад:, git status --porcelain
який позначає вихід, призначений для розбору .
--porcelain
Дайте вихід у простому для розбору форматі для сценаріїв. Це схоже на короткий вихід, але залишатиметься стабільним у всіх версіях git та незалежно від конфігурації користувача. Детальніше дивіться нижче.
Нитка згаданих вище деталей:
Це я певною мірою винен.
«Коротке положення» форма має в вигляді для людини очних яблук, і була розроблена Junio.
Деякі люди також хотіли отримати сценарій вихідного статусу, тому я "--porcelain
" ударив " " у тому ж форматі, який вимикає такі налаштовані функції, як відносні назви шляхів і кольоровість, і дає неявну обіцянку, що ми не будемо вносити подальші зміни у формат.
Ідея полягала в тому, щоб не допустити, щоб люди писали навколо себе--short
, бо він ніколи не мав на меті бути стабільним.
Так так, хоча--porcelain
сам по собі є стабільним і чудовим, це, мабуть, не найдобріше для парсерів. Формат "-z --porcelain
" набагато більше, і я рекомендував би його всім, хто сценаріює навколо "git status"
Це відображає потребу користувачів git у використанні порцелянових команд у своїх сценаріях!
Але тільки при стабільному виході (з --porcelain
)
Як зазначив по ВІЛЬЯМ-айсберг , те ж саме можна сказати git push
!
--porcelain
Отримайте машиночитаний вихід.
Рядок статусу виводу для кожного посилання буде відокремлено вкладками та надісланоstdout
замістьstderr
.
Будуть вказані повні символічні назви посилань.
Як пропонує Джон Глассмер у коментарях :
Можливо, сенс
--porcelain
тут полягає в тому, щоб "отримати вихід, придатний для споживання порцеляновими сценаріями" .
І це може бути підтверджено першим випадком введення " --porcelain
варіанту"
(раніше git status --porcelain
, фіксувати 6f15787, вересень 2009, git 1.7.0 ,
раніше git push --porcelain
, виконувати 1965ff7, червень 2009, git 1.6.4 ):
-p
--porcelain
Показуйте у форматі, призначеному для споживання машини.
Комітет b5c698d, жовтень 2006 р., Git 1.4.4
Нова опція забезпечує вихідний вихідний формат команди, щоб виводити висновок, який простіше працювати з Porcelain .
git push
має аналогічну аномальну машиночитабельність --porcelain
.
--porcelain
тут полягає в тому, щоб "отримати вихід, придатний для споживання порцеляновими сценаріями".
git diff-tree --word-diff=porcelain
Намикання та використання терміна "порцеляна" в git насправді був Майком Тахом, інакше втратив гарячий аргумент з Лінусом Торвальдсом.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
Насправді, одна з моїх сподівань полягала в тому, що інші SCM можуть просто використовувати сантехніку.
Але тоді я б дійсно запропонував вам використовувати "git" сам, а не будь-який "libgit
". Тобто ви приймаєте всю сантехніку як справжню програму, і замість того, щоб намагатися з'єднатись з окремими підпрограмами, ви б її скриптували .Якщо ви цього не хочете, я цього не зроблю.
Все ж має сенс відокремити сантехніку від порцеляни .
Порцеляна - це мила назва програм та наборів програм залежно від core git, що пропонує доступ до core git високого рівня. Порцеляни викривають більше інтерфейс 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 - це мила назва програм та наборів програм залежно від core git, що надає доступ до core git високого рівня.
Існує два чітких значення порцеляни в git.
Ці два значення, хоча це можна стверджувати, не є суворо суперечливими, але можуть здаватися суперечливими.
Офіційна книга Pro Git :
Але оскільки Git спочатку був інструментарієм для системи управління версіями, а не повноцінною користувальницькою системою VCS, він має ряд підкоманд, які виконують низькорівневі роботи та були розроблені для того, щоб бути пов'язаними разом у стилі UNIX або викликатись із скриптів. Ці команди, як правило, називаються "сантехнічними" командами Гіта, тоді як більш зручні команди називаються "порцеляновими" командами.
--porcelain
/ =porcelain
варіантиБагато команд git поставляються з --porcelain
опцією , призначеною для сценаріїв.
git status
' документація :
--porcelain[=<version>]
Дайте вихід у простому для розбору форматі для сценаріїв. Це схоже на короткий вихід, але залишатиметься стабільним у всіх версіях Git та незалежно від конфігурації користувача. Детальніше дивіться нижче.
git diff
«S документація :
--word-diff[=<mode>]
порцеляна
Використовуйте спеціальний лінійний формат, призначений для споживання сценарію.