Istilah "porselen" muncul sesekali dalam dokumentasi Git. Apa artinya?
Istilah "porselen" muncul sesekali dalam dokumentasi Git. Apa artinya?
Jawaban:
"Porcelain" adalah bahan dari mana toilet biasanya dibuat (dan kadang-kadang perlengkapan lainnya seperti wastafel). Ini berbeda dari "pipa ledeng" (pipa dan saluran air yang sebenarnya), di mana porselen menyediakan antarmuka yang lebih ramah pengguna ke pipa ledeng.
Git menggunakan terminologi ini dalam analogi, untuk memisahkan perintah tingkat rendah yang biasanya tidak perlu digunakan pengguna secara langsung ("plumbing") dari perintah tingkat tinggi yang lebih ramah pengguna ("porselen").
Lebih penting lagi, istilah "porselen" berlaku untuk perintah tingkat tinggi , dengan output:
Itu kuncinya: jika Anda skrip, Anda harus menggunakan perintah plumbing jika mungkin , dengan output yang stabil. Bukan perintah porselen.
Namun, Anda dapat menggunakan output dari perintah porselen yang memiliki --porcelain
opsi dalam skrip (lihat di bawah), seperti:
git status --porcelain
git push --porcelain
git blame --porcelain
Meskipun git menyertakan lapisan porselennya sendiri , perintah tingkat rendahnya cukup untuk mendukung pengembangan porselen alternatif.
Antarmuka (input, output, set opsi dan semantik) untuk perintah tingkat rendah ini dimaksudkan untuk menjadi jauh lebih stabil daripada perintah tingkat Porcelain, karena perintah ini terutama untuk penggunaan skrip .
Antarmuka ke perintah Porcelain dapat berubah untuk meningkatkan pengalaman pengguna akhir.
Lihat " Bagaimana cara saya menentukan secara program apakah ada perubahan yang tidak dikomit? " Sebagai contoh untuk menggunakan perintah plumbing alih-alih yang porselen.
Catatan: Perintah porselen dapat memiliki --porcelain
opsi.
Misalnya:, git status --porcelain
yang menunjukkan output yang ingin diuraikan .
--porcelain
Berikan hasil dalam format skrip yang mudah diurai. Ini mirip dengan output pendek, tetapi akan tetap stabil di versi git dan terlepas dari konfigurasi pengguna. Lihat di bawah untuk detailnya.
Utas yang disebutkan di atas merinci:
Ini salahku, sampai taraf tertentu.
The "status pendek" bentuk yang dimaksudkan untuk bola mata manusia, dan dirancang oleh Junio.
Beberapa orang juga menginginkan keluaran status yang dapat di-skrip, jadi saya menampar "--porcelain
" pada format yang sama yang mematikan fitur yang dapat dikonfigurasi seperti nama jalur relatif dan pewarnaan, dan membuat janji tersirat bahwa kita tidak akan membuat perubahan lebih lanjut pada format.
Idenya adalah untuk mencegah orang dari skrip sekitar--short
, karena tidak pernah dimaksudkan untuk menjadi stabil
Jadi ya, sementara--porcelain
dengan sendirinya adalah stabil dan scriptable, itu mungkin bukan yang paling ramah untuk parser. Format "-z --porcelain
" lebih dari itu, dan saya akan merekomendasikan ini kepada siapa pun yang menulis "git status"
Itu mencerminkan kebutuhan, bagi pengguna git, untuk menggunakan perintah porselen dalam skrip mereka!
Tetapi hanya dengan output yang stabil (dengan --porcelain
)
Seperti yang dikomentari oleh william-berg , hal yang sama berlaku untuk git push
!
--porcelain
Menghasilkan keluaran yang bisa dibaca mesin.
Baris status output untuk setiap referensi akan dipisahkan dan dikirim ke tabstdout
alih-alihstderr
.
Nama simbolis lengkap dari referensi akan diberikan.
Seperti John Glassmyer usulkan dalam komentar :
Mungkin yang dimaksud di
--porcelain
sini adalah "menghasilkan keluaran yang cocok untuk dikonsumsi oleh skrip porselen" .
Dan itu bisa didukung oleh kasus pertama dari --porcelain
pengenalan "opsi"
(sebelum git status --porcelain
, komit 6f15787, September 2009, git 1.7.0 ,
sebelumnya git push --porcelain
, komit 1965ff7, Juni 2009, git 1.6.4 ):
-p
--porcelain
Tampilkan dalam format yang dirancang untuk konsumsi mesin.
Commit b5c698d, Oktober 2006, git 1.4.4
Opsi baru membuat format output asli perintah untuk mengeluarkan output yang lebih mudah ditangani oleh Porcelain .
git push
memiliki mesin yang juga dapat dibaca --porcelain
.
--porcelain
sini adalah "menghasilkan keluaran yang cocok untuk dikonsumsi oleh skrip porselen".
git diff-tree --word-diff=porcelain
Mata uang dan penggunaan istilah "porselen" dalam git sebenarnya oleh Mike Taht, sementara sebaliknya kehilangan perdebatan sengit dengan Linus Torvalds.
http://www.gelato.unsw.edu.au/archives/git/0504/0881.html
Bahkan, salah satu harapan saya adalah bahwa SCM lain hanya bisa menggunakan pipa git.
Tapi kemudian saya benar-benar menyarankan agar Anda menggunakan "git" itu sendiri, bukan "libgit
". Yaitu, Anda mengambil semua pipa ledeng sebagai program nyata, dan alih-alih mencoba menautkannya dengan rutinitas individu, Anda akan menuliskannya .Jika Anda tidak menginginkannya, saya tidak akan melakukannya.
Tetap masuk akal untuk memisahkan pipa dari porselen .
Porcelain adalah nama yang lucu untuk program dan suite program tergantung pada core git, menghadirkan akses tingkat tinggi ke core git. Porcelains memperlihatkan lebih banyak antarmuka SCM daripada "plumbing".
Perintah porselen dirancang untuk konsumsi manusia, berbeda dengan perintah yang outputnya mudah diurai oleh komputer. git status
akan menjadi salah satu contohnya.
--porcelain
opsi, itu untuk konsumsi mesin.
git status --porcelain
: Berikan output dalam format skrip yang mudah diurai. (...) tetapi akan tetap stabil di seluruh versi Git dan terlepas dari konfigurasi pengguna.
git status --porcelain
memiliki format stabil yang dapat diuraikan, tetapi status
perintah itu sendiri dirancang untuk menghadap pengguna (sebagai lawan, misalnya, git ls-files
).
--porcelain
pilihan yang membingungkan !?--porcelain
opsi lalu gunakan output untuk skrip. Pada dasarnya penulis git secara implisit berjanji untuk tidak mengubah apa pun di sana, dalam waktu dekat. contoh: Saya dapat menggunakan git status --porcelain
dan menggunakan output untuk skrip dan itu akan baik-baik saja.For more detail, checkout VonC's answer.
--porcelain
pada perintah "porselen" yang sudah ada untuk mencapai fungsionalitas "pseudo-plumbing" berpadu dengan sangat baik dengan desain UI umum Git ...;)
--plumbing
(karena Anda tukang ledeng kali ini, bukan pengguna "porselen" biasa).
Jawaban Greg Hewgill tepat sekali. Perhatikan bahwa ada porselen alternatif yang tersedia untuk Git, termasuk Easy Git, yap, pyrite, dan vng. Masing-masing dimaksudkan untuk membuat Git lebih mudah dipelajari / digunakan untuk beberapa bagian dari komunitas. Tautan ke semua proyek ini ada di halaman Easy Git: http://people.gnome.org/~newren/eg/ .
Porcelain adalah nama yang lucu untuk program dan suite program tergantung pada core git, menghadirkan akses tingkat tinggi ke core git.
Ada dua arti porselen berbeda di git.
Kedua makna ini, meskipun dapat diperdebatkan tidak sepenuhnya bertentangan, dapat muncul kontradiktif.
Buku Pro Git resmi :
Tetapi karena Git awalnya merupakan toolkit untuk sistem kontrol versi daripada VCS yang ramah pengguna, ia memiliki sejumlah sub-perintah yang melakukan pekerjaan tingkat rendah dan dirancang untuk dirantai bersama-sama dengan gaya UNIX atau dipanggil dari skrip. Perintah-perintah ini umumnya disebut sebagai perintah "plumbing" Git, sedangkan perintah yang lebih ramah pengguna disebut perintah "porselen".
--porcelain
/ =porcelain
opsiBanyak perintah git datang dengan --porcelain
opsi yang sedang dimaksudkan untuk scripting.
git status
' dokumentasi :
--porcelain[=<version>]
Berikan hasil dalam format skrip yang mudah diurai. Ini mirip dengan keluaran pendek, tetapi akan tetap stabil di versi Git dan terlepas dari konfigurasi pengguna. Lihat di bawah untuk detailnya.
git diff
's dokumentasi :
--word-diff[=<mode>]
porselen
Gunakan format berbasis garis khusus yang ditujukan untuk konsumsi skrip.