Il termine "porcellana" appare occasionalmente nella documentazione di Git. Cosa significa?
Il termine "porcellana" appare occasionalmente nella documentazione di Git. Cosa significa?
Risposte:
La "porcellana" è il materiale con cui vengono solitamente realizzati i servizi igienici (e talvolta altri dispositivi come i lavabi). Ciò si distingue dal "sistema idraulico" (i tubi e gli scarichi effettivi), in cui la porcellana fornisce un'interfaccia più intuitiva all'impianto idraulico.
Git usa questa terminologia in analogia, per separare i comandi di basso livello che gli utenti di solito non hanno bisogno di usare direttamente (il "sistema idraulico") dai comandi di alto livello più user-friendly (il "porcellanato").
Ancora più importante, il termine "porcellana" si applica ai comandi di alto livello , con output:
Questa è la chiave: se si esegue lo script, è necessario utilizzare, se possibile , comandi idraulici , con output stabili. Non comandi di porcellana.
Tuttavia, puoi usare l'output di un comando di porcellana che ha --porcelain
un'opzione nello script (vedi sotto), come:
git status --porcelain
git push --porcelain
git blame --porcelain
Sebbene git includa il proprio strato di porcellana , i suoi comandi di basso livello sono sufficienti per supportare lo sviluppo di porcellane alternative.
L'interfaccia (input, output, set di opzioni e semantica) a questi comandi di basso livello è pensata per essere molto più stabile rispetto ai comandi di livello Porcelain, perché questi comandi sono principalmente per l'uso con script .
L'interfaccia con i comandi di Porcelain invece è soggetta a modifiche al fine di migliorare l'esperienza dell'utente finale.
Vedi " Come posso determinare a livello di codice se ci sono modifiche senza commit? " Come esempio per usare i comandi idraulici invece di quelli di porcellana.
Nota: un comando di porcellana può avere --porcelain
un'opzione.
Ad esempio:, git status --porcelain
che designa un output destinato ad essere analizzato .
--porcelain
Fornisci l'output in un formato facile da analizzare per gli script. Questo è simile all'output breve, ma rimarrà stabile tra le versioni git e indipendentemente dalla configurazione dell'utente. Vedi sotto per i dettagli.
La discussione sopra menzionata dettagli:
Questa è colpa mia, in una certa misura.
La forma dello "stato corto" è pensata per i bulbi oculari umani ed è stata progettata da Junio.
Alcune persone volevano anche un output dello stato tramite script, quindi ho dato uno "--porcelain
" allo stesso formato che disattiva le funzioni configurabili come i relativi percorsi e colorazione e promette implicitamente che non avremo ulteriori modifiche al formato.
L'idea era di impedire alle persone di scrivere script in giro--short
, perché non era mai stato pensato per essere stabile.
Quindi sì, mentre di--porcelain
per sé è stabile e programmabile, forse non è il più amichevole per i parser. Il-z --porcelain
formato " " è molto di più, e lo consiglierei a chiunque scriva "git status"
Ciò riflette la necessità, per gli utenti git, di usare i comandi di porcellana nei loro script!
Ma solo con output stabile (con --porcelain
)
Come commentato da William-Berg , lo stesso vale git push
!
--porcelain
Produce un output leggibile dalla macchina.
La riga di stato dell'output per ciascun riferimento verrà separata da tabulazione e inviatastdout
invece distderr
.
Verranno forniti i nomi simbolici completi degli arbitri.
Come John Glassmyer propone nei commenti :
Forse il significato di
--porcelain
qui è "produrre output adatto al consumo mediante script in porcellana" .
E ciò potrebbe essere supportato dal primo caso dell'introduzione di " --porcelain
opzioni"
(prima git status --porcelain
, commit 6f15787, settembre 2009, git 1.7.0 ,
prima git push --porcelain
, commit 1965ff7, giugno 2009, git 1.6.4 ):
-p
--porcelain
Mostra in un formato progettato per il consumo della macchina.
Commit b5c698d, ottobre 2006, git 1.4.4
La nuova opzione rende il formato di output nativo del comando per emettere output che è più facile da gestire da Porcelain .
git push
è leggibile in modo analogo dalla macchina --porcelain
.
--porcelain
qui è "produrre output adatto al consumo mediante script in porcellana".
git diff-tree --word-diff=porcelain
Il conio e l'uso del termine "porcellana" in git furono in realtà di Mike Taht, mentre altrimenti perse una discussione accesa con Linus Torvalds.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
In effetti, una delle mie speranze era che gli altri SCM potessero semplicemente usare l'idraulica git.
Ma poi suggerirei davvero di usare "git" stesso, non alcun "libgit
". Vale a dire che prendi tutto l'impianto idraulico come programmi reali e invece di cercare di collegarti a routine individuali, lo scriveresti .Se non lo vuoi, non lo farò.
Tuttavia ha ancora senso separare l'impianto idraulico dalla porcellana .
Porcelain è un nome carino per programmi e suite di programmi a seconda del core git, che presenta un accesso di alto livello al core git. Le porcellane espongono più di un'interfaccia SCM che il "sistema idraulico".
I comandi in porcellana sono progettati per il consumo umano, al contrario dei comandi il cui output è facile da analizzare per i computer. git status
sarebbe un esempio.
--porcelain
opzione, è per il consumo della macchina.
git status --porcelain
: Fornisce l'output in un formato facile da analizzare per gli script. (...) ma rimarrà stabile tra le versioni di Git e indipendentemente dalla configurazione dell'utente.
git status --porcelain
ha un formato stabile che può essere analizzato, ma il status
comando stesso è progettato per essere rivolto all'utente (al contrario, ad esempio, git ls-files
).
--porcelain
opzione confusa !?--porcelain
opzione e poi usa l'output per lo scripting. Fondamentalmente gli autori di git promettono implicitamente di non cambiare nulla lì dentro, in qualunque momento presto. esempio: potrei usare git status --porcelain
e usare l'output per lo scripting e sarebbe perfettamente ok.For more detail, checkout VonC's answer.
--porcelain
su comandi già "porcellana" per ottenere la funzionalità "pseudo-impianto idraulico" si fonde molto bene con il design generale dell'interfaccia utente di Git ...;)
--plumbing
(poiché questa volta sei un idraulico, non un normale utente "porcellana").
La risposta di Greg Hewgill è esattamente corretta. Nota che ci sono porcellane alternative disponibili per Git, tra cui Easy Git, yap, pyrite e vng. Ciascuno ha lo scopo di rendere Git più facile da imparare / utilizzare per alcune parti della comunità. I collegamenti a tutti questi progetti si trovano nella pagina Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelain è un nome carino per programmi e suite di programmi a seconda del core git, che presenta un accesso di alto livello al core git.
Ci sono due significati distinti di porcellana in git.
Questi due significati, sebbene possano essere argomentati non strettamente contraddittori, possono apparire contraddittori.
Il libro ufficiale di Pro Git :
Ma poiché Git era inizialmente un toolkit per un sistema di controllo della versione piuttosto che un VCS completo e facile da usare, ha un numero di sottocomandi che fanno un lavoro di basso livello e sono stati progettati per essere concatenati in stile UNIX o chiamati da script. Questi comandi sono generalmente indicati come comandi "idraulici" di Git, mentre i comandi più intuitivi sono chiamati comandi "porcellana".
--porcelain
/ =porcelain
opzioniMolti comandi git sono dotati di --porcelain
un'opzione, che è significato per lo scripting.
git status
' documentazione :
--porcelain[=<version>]
Fornisci l'output in un formato facile da analizzare per gli script. Questo è simile all'output breve, ma rimarrà stabile tra le versioni di Git e indipendentemente dalla configurazione dell'utente. Vedi sotto per i dettagli.
git diff
's documentazione :
--word-diff[=<mode>]
porcellana
Utilizzare uno speciale formato basato su riga destinato al consumo di script.