Der Begriff "Porzellan" erscheint gelegentlich in der Git-Dokumentation. Was bedeutet das?
Der Begriff "Porzellan" erscheint gelegentlich in der Git-Dokumentation. Was bedeutet das?
Antworten:
"Porzellan" ist das Material, aus dem normalerweise Toiletten hergestellt werden (und manchmal auch andere Armaturen wie Waschbecken). Dies unterscheidet sich von "Sanitär" (den eigentlichen Rohren und Abflüssen), bei denen das Porzellan eine benutzerfreundlichere Schnittstelle zum Sanitär bietet.
Git verwendet diese Terminologie in Analogie, um die Befehle auf niedriger Ebene, die Benutzer normalerweise nicht direkt verwenden müssen (das "Sanitär"), von den benutzerfreundlicheren Befehlen auf hoher Ebene (das "Porzellan") zu trennen.
Noch wichtiger ist, dass der Begriff "Porzellan" für Befehle auf hoher Ebene mit folgenden Ausgaben gilt:
Das ist der Schlüssel: Wenn Sie Skript, Sie , wenn möglich , verwenden sollten , Sanitär - Befehle , mit stabilen Ausgängen. Keine Porzellankommandos.
Allerdings können Sie die Ausgabe eines Porzellan Befehl verwenden , die eine hat --porcelain
Option Skript (siehe unten), wie:
git status --porcelain
git push --porcelain
git blame --porcelain
Obwohl Git eine eigene Porzellanschicht enthält , reichen seine Befehle auf niedriger Ebene aus, um die Entwicklung alternativer Porzellane zu unterstützen.
Die Schnittstelle (Eingabe, Ausgabe, Optionssatz und Semantik) zu diesen Befehlen auf niedriger Ebene soll wesentlich stabiler sein als Befehle auf Porzellanebene, da diese Befehle hauptsächlich für die Verwendung mit Skripten bestimmt sind .
Die Benutzeroberfläche für Porzellanbefehle kann sich jedoch ändern, um die Endbenutzererfahrung zu verbessern.
Siehe " Wie kann ich programmgesteuert feststellen, ob nicht festgeschriebene Änderungen vorliegen? " Als Beispiel für die Verwendung von Installationsbefehlen anstelle von Porzellanbefehlen.
Hinweis: Ein Porzellanbefehl kann eine --porcelain
Option haben.
Zum Beispiel : git status --porcelain
, was eine Ausgabe bezeichnet, die analysiert werden soll .
--porcelain
Geben Sie die Ausgabe in einem einfach zu analysierenden Format für Skripte an. Dies ähnelt der kurzen Ausgabe, bleibt jedoch in allen Git-Versionen und unabhängig von der Benutzerkonfiguration stabil. Siehe unten für Details.
Der oben erwähnte Thread Details:
Das ist bis zu einem gewissen Grad meine Schuld.
Das Formular "Kurzstatus" ist für menschliche Augäpfel gedacht und wurde von Junio entworfen.
Einige Leute wollten auch eine skriptfähige Statusausgabe, deshalb habe ich ein "--porcelain
" auf dasselbe Format gesetzt, das konfigurierbare Funktionen wie relative Pfadnamen und Kolorierung deaktiviert, und implizit versprochen, dass wir keine weiteren Änderungen am Format vornehmen werden.
Die Idee war, Leute daran zu hindern, Skripte zu schreiben--short
, weil es niemals stabil sein sollte.
Also ja, während--porcelain
selbst ist stabil und skriptfähig , ist es vielleicht nicht das freundlichste zu Parsern. Das "-z --porcelain
" Format ist viel mehr, und ich würde es jedem empfehlen, der sich mit "Git Status" beschäftigt.
Dies spiegelt die Notwendigkeit für Git-Benutzer wider, Porzellanbefehle in ihren Skripten zu verwenden!
Aber nur mit stabiler Leistung (mit --porcelain
)
Wie von William-Berg kommentiert , gilt das Gleiche !git push
--porcelain
Maschinenlesbare Ausgabe erzeugen.
Die Ausgangsstatuszeile für jede ref wird auf Tabula getrennt und gesendet wird ,stdout
stattstderr
.
Die vollständigen symbolischen Namen der Refs werden angegeben.
Wie John Glassmyer in den Kommentaren vorschlägt :
Vielleicht ist die Bedeutung von
--porcelain
hier "Produktion produzieren, die für den Verbrauch durch Porzellanskripte geeignet ist" .
Und dies könnte durch den allerersten Fall der --porcelain
Einführung von " Optionen" unterstützt werden
(vorher git status --porcelain
Commit 6f15787, September 2009, Git 1.7.0 ,
vorher git push --porcelain
Commit 1965ff7, Juni 2009, Git 1.6.4 ):
-p
--porcelain
In einem Format anzeigen, das für den Maschinenverbrauch ausgelegt ist.
Commit b5c698d, Oktober 2006, git 1.4.4
Mit der neuen Option kann das native Ausgabeformat des Befehls eine Ausgabe ausgeben, die für Porzellan einfacher zu handhaben ist .
git push
eine ähnlich anomale maschinenlesbare --porcelain
.
--porcelain
hier "Produktion produzieren, die für den Verbrauch durch Porzellanskripte geeignet ist".
git diff-tree --word-diff=porcelain
Die Münzprägung und Verwendung des Begriffs "Porzellan" in Git stammte eigentlich von Mike Taht, während er ansonsten einen heftigen Streit mit Linus Torvalds verlor.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
Tatsächlich war eine meiner Hoffnungen, dass andere SCMs nur die Git-Klempnerarbeiten verwenden könnten.
Aber dann würde ich wirklich vorschlagen, dass Sie "git" selbst verwenden, nicht "libgit
". Dh nehmen Sie alle der Sanitär als echte Programme, und stattdessen Link gegen einzelne Routinen versuchen, würden Sie Skript es.Wenn du es nicht willst, werde ich es nicht tun.
Trotzdem macht es Sinn, die Rohrleitungen vom Porzellan zu trennen .
Porzellan ist ein süßer Name für Programme und Programmsuiten, die je nach Core-Git einen hohen Zugang zum Core-Git bieten. Porzellane legen mehr eine SCM-Schnittstelle frei als die "Sanitär".
Porzellanbefehle sind für den menschlichen Verzehr konzipiert, im Gegensatz zu Befehlen, deren Ausgabe für Computer leicht zu analysieren ist. git status
wäre ein Beispiel.
--porcelain
Option verwenden, ist sie für den maschinellen Verbrauch bestimmt.
git status --porcelain
: Geben Sie die Ausgabe in einem einfach zu analysierenden Format für Skripte an. (...) bleibt jedoch in allen Git-Versionen und unabhängig von der Benutzerkonfiguration stabil.
git status --porcelain
hat ein stabiles Format, das analysiert werden kann, aber der status
Befehl selbst ist so konzipiert, dass er dem Benutzer zugewandt ist (im Gegensatz zu beispielsweise git ls-files
).
--porcelain
Option?--porcelain
Option hinzufügen und dann Verwenden Sie die Ausgabe für die Skripterstellung. Grundsätzlich versprechen die Autoren von git implizit, in naher Zukunft nichts daran zu ändern. Beispiel: Ich kann git status --porcelain
die Ausgabe für Skripte verwenden, und das wäre vollkommen in Ordnung.For more detail, checkout VonC's answer.
--porcelain
in bereits "Porzellan" -Befehlen genannt wird, um die "Pseudo-Sanitär" -Funktionalität zu erreichen, passt sehr gut zum allgemeinen UI-Design von Git ...;)
--plumbing
(da Sie diesmal ein Klempner sind und kein normaler "Porzellan" -Benutzer).
Greg Hewgills Antwort ist genau richtig. Beachten Sie, dass für Git alternative Porzellane verfügbar sind, darunter Easy Git, Yap, Pyrit und Vng. Jedes soll Git das Erlernen / Verwenden für einen Teil der Community erleichtern. Links zu all diesen Projekten finden Sie auf der Easy Git-Seite: http://people.gnome.org/~newren/eg/ .
Porzellan ist ein süßer Name für Programme und Programmsuiten, die je nach Core-Git einen hohen Zugang zum Core-Git bieten.
Es gibt zwei verschiedene Bedeutungen von Porzellan in Git.
Diese beiden Bedeutungen sind zwar nicht streng widersprüchlich, können aber widersprüchlich erscheinen.
Das offizielle Pro Git Buch :
Da Git ursprünglich ein Toolkit für ein Versionskontrollsystem und kein vollständig benutzerfreundliches VCS war, verfügt es über eine Reihe von Unterbefehlen, die auf niedriger Ebene ausgeführt werden und so konzipiert sind, dass sie im UNIX-Stil verkettet oder aus Skripten aufgerufen werden. Diese Befehle werden im Allgemeinen als "Plumbing" -Befehle von Git bezeichnet, während die benutzerfreundlicheren Befehle als "Porzellan" -Befehle bezeichnet werden.
--porcelain
/ =porcelain
OptionenViele git Befehle werden mit einer --porcelain
Option , die ist für Scripting gemeint.
git status
' Dokumentation :
--porcelain[=<version>]
Geben Sie die Ausgabe in einem einfach zu analysierenden Format für Skripte an. Dies ähnelt der kurzen Ausgabe, bleibt jedoch in allen Git-Versionen und unabhängig von der Benutzerkonfiguration stabil. Siehe unten für Details.
git diff
‚s - Dokumentation :
--word-diff[=<mode>]
Porzellan
Verwenden Sie ein spezielles zeilenbasiertes Format für den Skriptverbrauch.