Git'te “porselen” terimi ne anlama geliyor?


434

"Porselen" terimi zaman zaman Git belgelerinde görünür. Bunun anlamı ne?

Yanıtlar:


515

"Porselen" genellikle tuvaletlerin yapıldığı malzemedir (ve bazen lavabo gibi diğer armatürler). Bu, porselenin sıhhi tesisat için daha kullanıcı dostu bir arayüz sağladığı "sıhhi tesisat" (gerçek borular ve drenajlar) 'dan farklıdır.

Git, bu terminolojiyi benzer şekilde, kullanıcıların genellikle doğrudan kullanması gerekmeyen ("sıhhi tesisat") düşük seviye komutlarını daha kullanıcı dostu yüksek seviye komutlarından ("porselen") ayırmak için kullanır.


45
Cevabın bana mantıklı geldiğini düşünüyorum, ama sonra tekrar, Linus'un terimi oluşturan kişi olduğunu varsayıyorum, bu yüzden beynimi dünyasını ayrıştırırken biraz daha doğrudan ve kaba bir şekilde ayarlamaya eğilimliyim. :)
Nick Klauer

58
Linus'un tesisatının taşınması için kullanacağı potansiyel dışkı akışlarını hayal edip etmediğini merak ediyor. Açık kaynak kodu için sıhhi tesisat kirli bir iştir, ancak birisinin yapması gerekir.
Evan Plaice

36
Ve birkaçımız, gerçek git porselenin daha fazla sıhhi tesisat üzerine bir boya tabakası gibi olduğunu düşünüyoruz.
hemflit

14
Aşağıdaki diğer cevap hem daha doğru hem de daha yararlı
Charney Kaye

14
bunu komik yapan var mı?
Ben Wilde

446

Daha da önemlisi, "porselen" terimi , çıktısı olan üst düzey komutlar için geçerlidir :

  • insan tarafından okunabilir olması gerekiyordu
  • ayrıştırılmak istemedi
  • değişikliklere / evrimlere duyarlı

Bu anahtar: komut dosyası kullanıyorsanız, mümkünse sabit çıkışlarla sıhhi tesisat komutlarını kullanmalısınız . Porselen komutları değil.

Ancak, komut --porcelaindosyasında (aşağıya bakın) seçeneği olan bir porselen komutunun çıktısını kullanabilirsiniz , örneğin:

git status --porcelain
git push --porcelain
git blame --porcelain

Git kendi porselen tabakasını içermesine rağmen , düşük seviyeli komutları alternatif porselenlerin gelişimini desteklemek için yeterlidir.
Bu düşük seviyeli komutların arabirimi (giriş, çıkış, seçenekler kümesi ve semantik) Porselen seviye komutlarından çok daha kararlı olmalıdır , çünkü bu komutlar öncelikle komut dosyası kullanımı içindir .
Öte yandan Porselen komutlarına arabirim, son kullanıcı deneyimini geliştirmek için değiştirilebilir.

"Bkz kararsız değişiklikler varsa ben programlı nasıl belirlenir? " Sıhhi tesisat komutları yerine porselen olanları kullanarak bir örnek olarak.


Not: Porselen komutunun bir --porcelainseçeneği olabilir.
Örneğin:, ayrıştırılması gerekengit status --porcelain bir çıktıyı belirtir .

--porcelain

Komut dosyaları için çıktıyı ayrıştırması kolay bir biçimde verin. Bu kısa çıktıya benzer, ancak git sürümlerinde ve kullanıcı yapılandırmasına bakılmaksızın sabit kalır. Ayrıntılar için aşağıya bakın.

Yukarıda belirtilen iplik detayları:

Bu benim hatam, bir dereceye kadar.
"Kısa durumu" formu olan insan gören gözler için anlamına geliyordu ve Junio tarafından tasarlanmıştır.
Bazı insanlar da yazılabilir bir durum çıktısı istedi, bu yüzden --porcelaingöreceli yol adları ve renklendirme gibi yapılandırılabilir özellikleri kapatan aynı biçimde bir " " tokatladım ve formatta daha fazla değişiklik yapmayacağımızla ilgili örtük bir söz verdim .
Fikir insanların etrafta senaryo yazmasını önlemekti --short, çünkü asla istikrarlı olmadı.
Yani evet, süre --porcelaintek başına olan istikrarlı ve komut girişi, belki ayrıştırıcıları en dostça değildir. " -z --porcelain" Biçimi çok daha fazla ve ben "git status" etrafında komut dosyası olan herkese tavsiye ederim

Bu, git kullanıcıları için komut dosyalarında porselen komutlarını kullanma ihtiyacını yansıtır!
Ancak sadece kararlı çıktı ile (ile --porcelain)


William-berg tarafından yorumlandığı gibi , aynı şey geçerli !git push

--porcelain

Makinede okunabilir çıktılar üretin.
Her ref için çıkış durum satırı sekmeyle ayrılır ve stdoutbunun yerine adresine gönderilir stderr.
Referansların tam sembolik isimleri verilecektir.


As John Glassmyer önermektedir yorumlarda :

Belki de buradaki anlam --porcelain"porselen senaryolarla tüketime uygun çıktı üretmek" dir .

Ve bu ilk " --porcelainseçenek" girişiyle desteklenebilir
(önce git status --porcelain, 6f15787, Eylül 2009, git 1.7.0 ,
önce git push --porcelain, 1965ff7, Haziran 2009, git 1.6.4 ):

git blame --porcelain:

-p
--porcelain

Makine tüketimi için tasarlanmış bir formatta gösterin.

Taahhüt b5c698d, Ekim 2006, git 1.4.4

Yeni seçenek, Porselen tarafından işlenmesi daha kolay çıktı üretmek için komutun doğal çıktı formatını oluşturur .


2
git pushBenzer şekilde anormal bir makine tarafından okunabilir olduğunu fark ettim --porcelain.
william.berg

13
Belki de buradaki anlam --porcelain"porselen senaryolarla tüketime uygun çıktı üretmek" tir.
John Glassmyer

@JohnGlassmyer gerçekten çok büyük bir açıklama. Düzenlenmiş cevabımı gör (sonunda)
VonC

1
Ayrıcagit diff-tree --word-diff=porcelain
Nicholas Shanks

1
@PatrickSanan bir anlamda, evet. Çıktıları bu seçenekle güvenilir bir şekilde ayrıştırılabilir.
VonC

57

Git'teki "porselen" teriminin madeni para ve kullanımı aslında Mike Taht'a aitken, aksi halde Linus Torvalds ile ateşli bir tartışmayı kaybetti.

http://www.gelato.unsw.edu.au/archives/git/0504/0881.html

Aslında, benim umutlarımdan biri, diğer SCM'lerin git tesisatını kullanabilmesiydi.
Ama sonra gerçekten "git" 'i kullanmanızı öneririm libgit. Yani tüm tesisatları gerçek programlar olarak alıyorsunuz ve bireysel rutinlerle bağlantı kurmaya çalışmak yerine, senaryo yazıyorsunuz .

Eğer istemiyorsan, yapmayacağım.
Yine de, sıhhi tesisatı porselenden ayırmak mantıklı .


7
İlginç. +1. Benim yukarıda kendi cevap ürünü kullanmadan gelen, ancak bağlantı başvuruları ne anlama terimin kökeni gibi görünüyor.
VonC

21

Çekirdek git'e yüksek düzeyde erişim sunan porselen, programlar ve program paketleri için şirin bir isimdir. Porselenler, "tesisattan" daha fazla bir SCM arayüzü ortaya koyar.

- Porselen , Git Wiki


7

Porselen komutları, çıktıları bilgisayarların ayrıştırması kolay olan komutların aksine insan tüketimi için tasarlanmıştır. git statusbir örnek olurdu.


8
"Porselen" ... "insan tüketimi için" ... Cam yiyebilirim . (sadece şaşkınlık duyan herkes için karışık metafor şaka yapıyor / not ediyor)
ajm475du

5
Porselen komutları insan tüketimi içindir, ancak --porcelainseçeneği kullandığınızda makine tüketimi içindir.
ThomasW

git status --porcelain: Çıktıya komut dosyaları için ayrıştırılması kolay bir format verin. (...) ancak Git sürümlerinde ve kullanıcı yapılandırmasından bağımsız olarak sabit kalacaktır.
19'da timtam

Downvote için teşekkürler. 🙄 Evet, git status --porcelainayrıştırılabilecek sabit bir biçime sahip, ancak statuskomutun kendisi kullanıcı tarafından karşılanacak şekilde tasarlanmıştır (örneğin aksine git ls-files).
dahlbyk

7

Kısa ve Basit Açıklama

  • İki tür komut vardır: "poreclain" ve "plumbing".
  • " Porselen " komutları olmamalıdır programlama / komut dosyası güvenilebilecek: onlar değişimin muhtemeldir, çünkü ve insanlar değil makineleri içindir.
  • Komut dosyası oluşturmak için " Sıhhi Tesisat " komutları kullanılmalıdır, çünkü bunlar daha kararlıdır ve değişme olasılıkları daha düşüktür.

Ama kafa karıştırıcı --porcelainseçenek ne olacak !?

  • Eğer isterseniz: (i) porselen komutu VE (ii) çıkış güvenilir (porselen komutları değil, yalnızca ayrıştırma insanlarda içindir, unutmayın) çözümlenebilir sağlamak istiyoruz, ardından kullanmak olabilir eklemek --porcelainseçeneği ve daha sonra komut dosyası oluşturmak için çıktıyı kullanın. Temelde git yazarları, yakın zamanda orada hiçbir şeyi değiştirmemeyi vaat ediyorlar. Örnek: git status --porcelainÇıktıyı komut dosyası oluşturmak için kullanabilir ve kullanabilirsiniz ve bu mükemmel olur.

Porselen / tesisat terminolojisi nereden geliyor?

  • İngilizce ilk diliniz değilse Greg Hewgill mükemmel bir şekilde açıklıyor.
  • Daha fazla ayrıntı için VonC'nin cevabını kontrol edin.

1
Kafa karıştırıcı porselen seçeneği ne olacak?
Cevabımda

kabul! Yukarıdaki cevabınıza bir link ekledim:For more detail, checkout VonC's answer.
BKSpurgeon

Tamam, en azından --porcelain"yalancı sıhhi tesisat" işlevselliği elde etmek için zaten "porselen" komutları adlı bir seçeneği kullanarak Git genel genel UI tasarımı ile harmanlanır ...;)
Sz.

1
Bu seçeneğe neden "porselen" denir anlamıyorum. Komutun tamamı zaten "porselen" dir. Seçenek çağrılmalıdır --plumbing(bu sefer bir tesisatçı olduğunuzdan, normal bir "porselen" kullanıcı değil).
seeker_of_bacon

3

Greg Hewgill'in yanıtı kesinlikle doğru. Git için Easy Git, yap, pyrite ve vng gibi alternatif porselenler bulunduğunu unutmayın. Her birinin Git'i topluluğun bir kısmı için öğrenmesini / kullanmayı kolaylaştırması amaçlanmıştır. Tüm bu projelere bağlantılar Easy Git sayfasında bulunmaktadır: http://people.gnome.org/~newren/eg/ .



1

Git'te porselenin iki farklı anlamı vardır.

Bu iki anlam tartışıldığı halde kesinlikle çelişkili olmasa da çelişkili görünebilir.

A. Kavramsal (sıhhi tesisat vs porselen)

Resmi Pro Git kitabı :

Ancak Git başlangıçta tam kullanıcı dostu bir VCS yerine bir sürüm kontrol sistemi için bir araç takımı olduğundan, düşük düzeyli işler yapan ve UNIX stili ile zincirlenecek veya komut dosyalarından çağrılacak şekilde tasarlanmış bir dizi alt komut içerir. Bu komutlar genellikle Git'in “tesisat” komutları olarak adlandırılırken, daha kullanıcı dostu komutlara “porselen” komutları denir.

B. --porcelain/ =porcelainseçenekler

Birçok git komutları bir ile gelen --porcelainseçenek olan komut dosyası için geliyordu.

git status' belgeleri :

--porcelain[=<version>]

Komut dosyaları için çıktıyı ayrıştırması kolay bir biçimde verin. Bu kısa çıktıya benzer, ancak Git sürümlerinde ve kullanıcı yapılandırmasından bağımsız olarak sabit kalır. Ayrıntılar için aşağıya bakın.

git diffadlı kullanıcının belgeleri :

--word-diff[=<mode>]

porselen

      Komut dosyası tüketimi için tasarlanmış özel bir satır tabanlı format kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.