Termin „porcelana” pojawia się czasami w dokumentacji Git. Co to znaczy?
Termin „porcelana” pojawia się czasami w dokumentacji Git. Co to znaczy?
Odpowiedzi:
„Porcelana” to materiał, z którego zwykle wykonane są toalety (a czasem inne urządzenia, takie jak umywalki). Różni się to od „hydrauliki” (rzeczywiste rury i odpływy), gdzie porcelana zapewnia bardziej przyjazny interfejs dla hydrauliki.
Git stosuje tę terminologię analogicznie, aby oddzielić polecenia niskiego poziomu, których użytkownicy zwykle nie muszą używać bezpośrednio („hydraulika”), od bardziej przyjaznych dla użytkownika poleceń wysokiego poziomu („porcelana”).
Co ważniejsze, termin „porcelana” odnosi się do poleceń wysokiego poziomu , z wyjściem:
To jest klucz: jeśli piszesz, powinieneś używać, jeśli to możliwe, poleceń hydraulicznych ze stabilnymi wyjściami. Nie porcelanowe polecenia.
Jednakże, można użyć wyjściowe polecenia porcelany, który ma --porcelain
opcję w skrypcie (patrz poniżej), takich jak:
git status --porcelain
git push --porcelain
git blame --porcelain
Chociaż git zawiera własną warstwę porcelany , jego polecenia niskiego poziomu są wystarczające, aby wspierać rozwój alternatywnych porcelan.
Interfejs (wejście, wyjście, zestaw opcji i semantyka) tych poleceń niskiego poziomu ma być znacznie bardziej stabilny niż polecenia poziomu Porcelany, ponieważ te polecenia są głównie do użytku skryptowego .
Z drugiej strony interfejs poleceń porcelany może ulec zmianie, aby poprawić wrażenia użytkownika końcowego.
Zobacz „ Jak programowo ustalić, czy są niezatwierdzone zmiany? ” Jako przykład użycia poleceń hydraulicznych zamiast porcelanowych.
Uwaga: Polecenie porcelanowe może mieć --porcelain
opcję.
Na przykład:, git status --porcelain
który oznacza wynik przeznaczony do przeanalizowania .
--porcelain
Podaj dane wyjściowe w łatwym do przeanalizowania formacie dla skryptów. Jest to podobne do krótkiego wyjścia, ale pozostanie stabilne w wersjach git i niezależnie od konfiguracji użytkownika. Szczegóły poniżej.
Wątek wspomniany powyżej:
To w pewnym stopniu moja wina.
„Krótki stan” jest przeznaczony dla ludzkich gałek ocznych i został zaprojektowany przez Junio.
Niektóre osoby również chciały uzyskać dane wyjściowe o statusie skryptowym, więc uderzyłem „--porcelain
” w ten sam format, który wyłącza konfigurowalne funkcje, takie jak względne nazwy ścieżek i kolorowanie, i daje domyślną obietnicę, że nie wprowadzimy dalszych zmian w formacie.
Chodziło o to, aby uniemożliwić ludziom pisanie skryptów--short
, ponieważ nigdy nie miało być stabilne.
Tak, chociaż--porcelain
sam w sobie jest stabilny i skryptowalny, być może nie jest najbardziej przyjazny dla analizatorów składni. Format „-z --porcelain
” jest o wiele bardziej korzystny i polecam go każdemu, kto pisze „git status”
To odzwierciedla potrzebę korzystania z porcelanowych poleceń w skryptach przez użytkowników git!
Ale tylko przy stabilnej wydajności (z --porcelain
)
Jak skomentował przez william-Berg , to samo dotyczy git push
!
--porcelain
Twórz dane wyjściowe do odczytu maszynowego.
Wyjściowa linia statusu dla każdego odwołania będzie oddzielona tabulatorami i wysyłana dostdout
zamiaststderr
.
Podane zostaną pełne symboliczne nazwy referencji.
Jak John Glassmyer proponuje w komentarzach :
Być może znaczeniem tego
--porcelain
jest „produkcja wyjściowa nadająca się do konsumpcji za pomocą skryptów porcelanowych” .
I może to być wspierane przez pierwszy przypadek wprowadzenia „ --porcelain
opcji”
(wcześniej git status --porcelain
, zatwierdzenie 6f15787, wrzesień 2009, git 1.7.0 ,
wcześniej git push --porcelain
, zatwierdzenie 1965ff7, czerwiec 2009, git 1.6.4 ):
-p
--porcelain
Pokaż w formacie zaprojektowanym do zużycia przez maszynę.
Commit b5c698d, październik 2006, git 1.4.4
Nowa opcja sprawia, że natywny format wyjściowy polecenia emituje dane wyjściowe, które są łatwiejsze w obsłudze przez Porcelain .
git push
ma podobnie anomalny odczyt maszynowy --porcelain
.
--porcelain
jest „produkcja wyjściowa nadająca się do konsumpcji za pomocą skryptów porcelanowych”.
git diff-tree --word-diff=porcelain
Moneta i użycie terminu „porcelana” w git zostało faktycznie napisane przez Mike'a Tahta, a poza tym przegrał gorącą dyskusję z Linusem Torvaldsem.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
W rzeczywistości jedną z moich nadziei było to, że inni SCM mogliby po prostu użyć hydrauliki git.
Ale wtedy naprawdę sugerowałbym, żebyś używał samego „git”, a nie żadnego „libgit
”. To znaczy, że bierzesz całą hydraulikę jako prawdziwe programy i zamiast próbować łączyć się z poszczególnymi procedurami, piszesz ją.Jeśli tego nie chcesz, nie zrobię tego.
Nadal jednak ma sens oddzielenie kanalizacji od porcelany .
Porcelana to urocza nazwa programów i pakietów programów w zależności od rdzenia git, prezentująca wysoki poziom dostępu do rdzenia git. Porcelany ujawniają więcej interfejsu SCM niż „hydraulikę”.
Polecenia porcelanowe są przeznaczone do spożycia przez ludzi, w przeciwieństwie do poleceń, których dane wyjściowe są łatwe do przeanalizowania przez komputery. git status
byłby jednym przykładem.
--porcelain
opcji, będą one przeznaczone do spożycia przez maszynę.
git status --porcelain
: Daj wynik w łatwym do przeanalizowania formacie dla skryptów. (...), ale pozostanie stabilny we wszystkich wersjach Git i niezależnie od konfiguracji użytkownika.
git status --porcelain
ma stabilny format, który można analizować, ale status
samo polecenie jest zaprojektowane tak, aby było skierowane do użytkownika (w przeciwieństwie do, na przykład, git ls-files
).
--porcelain
opcją !?--porcelain
opcję, a następnie użyj danych wyjściowych do tworzenia skryptów. Zasadniczo autorzy git domyślnie obiecują, że niczego tu nie zmienią, w najbliższym czasie. przykład: mogę używać git status --porcelain
i używać danych wyjściowych do tworzenia skryptów, co byłoby całkowicie w porządku.For more detail, checkout VonC's answer.
--porcelain
na już „porcelanowych” poleceniach w celu osiągnięcia funkcjonalności „pseudo-hydraulicznej” bardzo dobrze komponuje się z ogólnym projektem interfejsu użytkownika Git ...;)
--plumbing
(tym razem jesteś hydraulikiem, a nie zwykłym użytkownikiem „porcelany”).
Odpowiedź Grega Hewgilla jest dokładnie poprawna. Pamiętaj, że dla Git dostępne są alternatywne porcelany, w tym Easy Git, yap, piryt i vng. Każda z nich ma ułatwić Gitowi naukę / korzystanie z niej przez jakąś część społeczności. Linki do wszystkich tych projektów znajdują się na stronie Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelana to urocza nazwa programów i pakietów programów w zależności od rdzenia git, prezentująca wysoki poziom dostępu do rdzenia git.
Istnieją dwa różne znaczenia porcelany w git.
Te dwa znaczenia, chociaż można argumentować, nie są ze sobą ściśle sprzeczne, mogą wydawać się sprzeczne.
Oficjalna książka Pro Git :
Ponieważ jednak Git był początkowo zestawem narzędzi do kontroli wersji, a nie w pełni przyjaznym dla użytkownika VCS, ma wiele podkomend, które wykonują pracę na niskim poziomie i zostały zaprojektowane do łączenia w stylu UNIX lub wywoływania ze skryptów. Polecenia te są ogólnie nazywane poleceniami „Git”, a bardziej przyjazne dla użytkownika polecenia nazywane są „porcelanowymi”.
--porcelain
/ =porcelain
opcjeWiele poleceń git pochodzą z --porcelain
opcji, które jest przeznaczone dla skryptów.
git status
„ dokumentacja :
--porcelain[=<version>]
Podaj dane wyjściowe w łatwym do przeanalizowania formacie dla skryptów. Jest to podobne do krótkiego wyjścia, ale pozostanie stabilne w wersjach Git i niezależnie od konfiguracji użytkownika. Szczegóły poniżej.
git diff
„s dokumentacji :
--word-diff[=<mode>]
porcelana
Użyj specjalnego formatu liniowego przeznaczonego do użycia skryptu.