Git में "चीनी मिट्टी के बरतन" शब्द का क्या अर्थ है?


433

शब्द "चीनी मिट्टी के बरतन" कभी-कभी गिट प्रलेखन में दिखाई देता है। इसका क्या मतलब है?

जवाबों:


515

"पोर्सिलेन" वह सामग्री है जिसमें से शौचालय आमतौर पर बनाए जाते हैं (और कभी-कभी अन्य फिक्स्चर जैसे वॉशबेसिन)। यह "नलसाजी" (वास्तविक पाइप और नालियों) से अलग है, जहां चीनी मिट्टी के बरतन नलसाजी के लिए एक अधिक उपयोगकर्ता के अनुकूल इंटरफेस प्रदान करता है।

Git इस शब्दावली का उपयोग सादृश्य में, निम्न-स्तरीय आदेशों को अलग करने के लिए करता है जो उपयोगकर्ताओं को आमतौर पर अधिक उपयोगकर्ता के अनुकूल उच्च स्तरीय कमांड ("चीनी मिट्टी के बरतन") से सीधे ("नलसाजी") का उपयोग करने की आवश्यकता नहीं होती है।


45
मुझे लगता है कि इसका उत्तर मुझे समझ में आता है, लेकिन फिर, मैं मान रहा हूं कि लिनुस वह शब्द था जिसने इस शब्द को गढ़ा था, इसलिए मैं अपने मस्तिष्क को थोड़ा और अधिक प्रत्यक्ष और समायोजित करने के लिए समायोजित करता हूं जब उसकी दुनिया को पार्स किया जाता है। :)
निक क्लाऊर

58
आपको आश्चर्य होता है कि अगर लिनुस मलत्याग की संभावित धाराओं की कल्पना कर रहा था तो उसकी पाइपलाइन को परिवहन के लिए इस्तेमाल किया जाएगा। ओपन सोर्स कोड के लिए नलसाजी एक गंदा काम है, लेकिन किसी को यह करना है।
इवान प्लाइस

36
और हम में से कुछ को लगता है कि पाइपलाइन के ऊपर पेंट की परत की तरह वास्तविक गिट चीनी मिट्टी के बरतन अधिक है।
हेमफ्लिट

14
नीचे दिए गए अन्य उत्तर दोनों अधिक सच्चे और अधिक उपयोगी हैं
चरनी काये जूल

14
किसी और को यह हास्यप्रद लगता है?
बेन वाइल्ड

446

अधिक महत्वपूर्ण बात, "पोर्सिलेन" शब्द आउटपुट के साथ उच्च-स्तरीय कमांड पर लागू होता है :

  • मानव द्वारा पठनीय होने का मतलब है
  • पार्स करने का मतलब नहीं है
  • परिवर्तन / विकास के लिए अतिसंवेदनशील

यह कुंजी है: यदि आप स्क्रिप्ट करते हैं, तो आपको स्थिर आउटपुट के साथ, यदि संभव हो तो प्लंबिंग कमांड का उपयोग करना चाहिए । चीनी मिट्टी के बरतन आदेश नहीं।

हालांकि, आप एक चीनी मिट्टी के बरतन कमांड के आउटपुट का उपयोग कर सकते हैं जिसमें --porcelainस्क्रिप्ट में एक विकल्प है (नीचे देखें), जैसे:

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

यद्यपि गिट में अपनी स्वयं की चीनी मिट्टी की परत शामिल है , इसके निम्न-स्तरीय कमांड वैकल्पिक पोर्सलेन के विकास का समर्थन करने के लिए पर्याप्त हैं।
इन निम्न-स्तरीय आदेशों के लिए इंटरफ़ेस (इनपुट, आउटपुट, विकल्पों का सेट और शब्दार्थ) पोर्सिलेन स्तर के कमांड की तुलना में बहुत अधिक स्थिर होते हैं, क्योंकि ये कमांड मुख्य रूप से स्क्रिप्टेड उपयोग के लिए हैं
दूसरी ओर पोर्सिलेन कमांड का इंटरफ़ेस अंतिम उपयोगकर्ता अनुभव को बेहतर बनाने के लिए परिवर्तन के अधीन है।

देख " चीनी मिट्टी के बरतन के बजाय नलसाजी आदेशों का उपयोग करने के लिए एक उदाहरण के रूप में, अगर मैं बिना परिवर्तन किए गए हैं, तो मैं प्रोग्रामेटिक रूप से कैसे निर्धारित कर सकता हूं


नोट: एक चीनी मिट्टी के बरतन आदेश में एक --porcelainविकल्प हो सकता है ।
उदाहरण के लिए:, git status --porcelainजो आउटपुट को पार्स करने का मतलब है

--porcelain

स्क्रिप्ट के लिए एक आसान-से-पार्स प्रारूप में आउटपुट दें। यह लघु आउटपुट के समान है, लेकिन गिट संस्करणों में स्थिर रहेगा और उपयोगकर्ता विन्यास की परवाह किए बिना। विवरण के लिए नीचे देखें।

उपरोक्त विवरण में वर्णित धागा:

यह मेरी गलती है, कुछ हद तक।
"शॉर्ट स्थिति" प्रपत्र है मानव आंखों के लिए, और Junio द्वारा डिजाइन किया गया था।
कुछ लोग एक स्क्रिप्ट करने योग्य स्थिति आउटपुट भी चाहते थे, इसलिए मैंने --porcelainउसी प्रारूप पर एक " " थप्पड़ मारा, जो सापेक्ष पथनाम और रंग-विन्यास जैसे विन्यास योग्य सुविधाओं को बंद कर देता है, और एक अंतर्निहित वादा करता है कि हम प्रारूप में और बदलाव नहीं करेंगे।
यह विचार आसपास के लोगों को स्क्रिप्टिंग से रोकने के लिए था --short, क्योंकि यह कभी स्थिर होने का इरादा नहीं था।
तो हाँ, जबकि --porcelainअपने आप में स्थिर और स्क्रिप्ट योग्य है, यह शायद पार्सर्स के लिए सबसे अनुकूल नहीं है। " -z --porcelain" प्रारूप बहुत अधिक है, और मैं इसे "गिट स्थिति" के आसपास किसी को भी स्क्रिप्ट करने की सलाह दूंगा

यह git उपयोगकर्ताओं के लिए, उनकी लिपियों में चीनी मिट्टी के बरतन आदेशों का उपयोग करने की आवश्यकता को दर्शाता है!
लेकिन केवल स्थिर आउटपुट (साथ --porcelain)


जैसा कि विलियम-बर्ग ने टिप्पणी की थी , वही आगे बढ़ता है !git push

--porcelain

उत्पादन मशीन पठनीय उत्पादन।
प्रत्येक रेफ के लिए आउटपुट स्थिति रेखा टैब-अलग की जाएगी और stdoutइसके बजाय भेजी जाएगी stderr
Refs के पूर्ण प्रतीकात्मक नाम दिए जाएंगे।


जैसा कि जॉन ग्लासमर टिप्पणियों में प्रस्ताव करते हैं :

शायद यहाँ का अर्थ --porcelain"पोर्सिलेन लिपियों द्वारा खपत के लिए उपयुक्त उत्पादन का उत्पादन" है

और " --porcelainविकल्प" परिचय
(इससे पहले git status --porcelain, 6f15787, सितंबर 2009, git 1.7.0 ,
इससे पहले git push --porcelain, 1965ff7, जून 2009, git 1.6.4 प्रतिबद्ध करें) के पहले मामले से समर्थित हो सकता है :

git blame --porcelain:

-p
--porcelain

मशीन की खपत के लिए डिज़ाइन किए गए प्रारूप में दिखाएं।

प्रतिबद्ध b5c698d, अक्टूबर 2006, git 1.4.4

नया विकल्प आउटपुट उत्पन्न करने के लिए कमांड के मूल आउटपुट स्वरूप को बनाता है जो कि पोर्सिलेन द्वारा संभालना आसान है


2
मुझे लगता है git pushकि एक समान विसंगति मशीन पठनीय है --porcelain
william.berg

13
शायद --porcelainयहाँ का अर्थ "पोर्सिलेन लिपियों द्वारा खपत के लिए उपयुक्त उत्पादन का उत्पादन" है।
जॉन ग्लासमी

@ जॉनग्लासमीयर यह वास्तव में एक बहुत ही संभावित व्याख्या है। मेरा संपादित उत्तर (अंत में) देखें
VONC

1
इसके अलावाgit diff-tree --word-diff=porcelain
निकोलस शेंक्स

1
@PatrickSanan एक अर्थ में, हाँ। उनके आउटपुट को उस विकल्प के साथ मज़बूती से पार्स किया जा सकता है।
VonC

57

गिट में "चीनी मिट्टी के बरतन" शब्द का उपयोग और उपयोग वास्तव में माइक टाह द्वारा किया गया था, जबकि अन्यथा लिनुस टॉर्वाल्ड्स के साथ एक गर्म तर्क खो रहा था।

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

वास्तव में, मेरी एक आशा यह थी कि अन्य एससीएम सिर्फ गिट प्लंबिंग का उपयोग कर सकते हैं।
लेकिन फिर मैं वास्तव में सुझाव दूंगा कि आप "गिट" का उपयोग करें, किसी " libgit" का नहीं। यानी आप सभी प्लंबिंग को वास्तविक कार्यक्रमों के रूप में लेते हैं, और व्यक्तिगत रूटीन के खिलाफ लिंक करने की कोशिश करने के बजाय, आप इसे स्क्रिप्ट करेंगे।

यदि आप इसे नहीं चाहते हैं, तो मैं ऐसा नहीं करूंगा। हालांकि,
चीनी मिट्टी के बरतन से नलसाजी को अलग करने के लिए समझ में आता है , हालांकि।


7
दिलचस्प। +1। ऊपर मेरा खुद का जवाब उत्पाद का उपयोग करने से है, लेकिन आपका लिंक उस शब्द की उत्पत्ति प्रतीत होता है।
VonC

21

चीनी मिट्टी के बरतन कार्यक्रमों के लिए प्यारा नाम है और कोर गिट के आधार पर कार्यक्रम के सूट, कोर गिट के लिए एक उच्च स्तरीय पहुंच पेश करते हैं। पोर्सलेन "प्लंबिंग" की तुलना में SCM इंटरफ़ेस का अधिक विस्तार करते हैं।

- पोर्सिलेन , गिट विक


7

चीनी मिट्टी के बरतन आदेशों को मानव उपभोग के लिए डिज़ाइन किया गया है, उन आदेशों के विपरीत जिनके उत्पादन कंप्यूटर के लिए पार्स करना आसान है। git statusएक उदाहरण होगा।


8
"चीनी मिट्टी के बरतन" ... "मानव उपभोग के लिए" ... मैं ग्लास खा सकता हूं । (बस किसी को भी आसानी से भ्रमित किया जा सकता है के लिए मिश्रित रूपक / ध्यान देने वाली बात है)
ajm475du

5
चीनी मिट्टी के बरतन आदेश मानव उपभोग के लिए हैं, लेकिन जब आप --porcelainविकल्प का उपयोग करते हैं , तो यह मशीन की खपत के लिए होता है।
थॉमसडब्ल्यू

git status --porcelain: स्क्रिप्ट के लिए एक आसान-से-पार्स प्रारूप में आउटपुट दें। (...) लेकिन Git संस्करणों और उपयोगकर्ता कॉन्फ़िगरेशन की परवाह किए बिना स्थिर रहेगा।
tymtam

चढ़ाव के लिए धन्यवाद। 🙄 हां, git status --porcelainएक स्थिर प्रारूप है जिसे पार्स किया जा सकता है, लेकिन statusकमांड को स्वयं उपयोगकर्ता-सामना करने के लिए डिज़ाइन किया गया है (उदाहरण के लिए, इसके विपरीत git ls-files)।
दहलबीक

7

लघु और सरल व्याख्या

  • दो प्रकार के कमांड हैं: "पोर्कलेन" और "प्लंबिंग"।
  • " चीनी मिट्टी के बरतन " आदेश नहीं होना चाहिए प्रोग्रामिंग / स्क्रिप्टिंग पर निर्भर किया : क्योंकि वे बदलने की संभावना रखते हैं, और मनुष्यों के लिए होते हैं मशीन नहीं।
  • " प्लंबिंग " कमांड का उपयोग स्क्रिप्टिंग के लिए किया जाना चाहिए, क्योंकि वे अधिक स्थिर हैं, और बदलने की संभावना कम है।

लेकिन भ्रामक --porcelainविकल्प के बारे में क्या !?

  • यदि आप चाहते हैं: (i) एक चीनी मिट्टी के बरतन आदेश का उपयोग करें और (ii) आप यह सुनिश्चित करना चाहते हैं कि उत्पादन मज़बूती से पार्स किया जा सकता है (याद रखें, चीनी मिट्टी के बरतन आदेश केवल मनुष्यों के लिए हैं और पार्सिंग नहीं हैं), फिर आप विकल्प जोड़ सकते हैं --porcelainऔर फिर स्क्रिप्टिंग के लिए आउटपुट का उपयोग करें। मूल रूप से git के लेखकों का तात्पर्य है कि जल्द ही किसी भी समय, वहां कुछ भी नहीं बदलने का वादा किया जाता है। उदाहरण: मैं git status --porcelainस्क्रिप्टिंग के लिए आउटपुट का उपयोग और उपयोग कर सकता हूं और यह पूरी तरह से ठीक होगा।

चीनी मिट्टी के बरतन / नलसाजी शब्दावली कहाँ से आती है?

  • यदि अंग्रेजी आपकी पहली भाषा नहीं है, तो ग्रेग हेगिल इसे पूरी तरह से समझाते हैं।
  • अधिक विवरण के लिए, VonC का उत्तर चेकआउट करें ।

1
भ्रामक - सिरेमिक विकल्प के बारे में क्या? मुझे पता है कि मेरे जवाब में: stackoverflow.com/a/6978402/6309
VonC

माना! मैंने ऊपर आपके बहुत उत्तर का लिंक जोड़ा था:For more detail, checkout VonC's answer.
BKSpurgeon

ठीक है, कम से कम --porcelainपहले से ही "चीनी मिट्टी के बरतन" नाम के एक विकल्प का उपयोग करके "छद्म-प्लंबिंग" कार्यक्षमता प्राप्त करने के लिए जीआईटी के सामान्य यूआई डिजाइन के साथ बहुत अच्छी तरह से मिश्रण किया जाता है;)
एसजेड।

1
मुझे यह नहीं मिलता है कि इस विकल्प को "चीनी मिट्टी के बरतन" क्यों कहा जाता है। पूरी कमान पहले से ही "चीनी मिट्टी के बरतन" है। विकल्प को बुलाया जाना चाहिए --plumbing(क्योंकि आप इस समय एक प्लंबर हैं, नियमित "चीनी मिट्टी के बरतन" उपयोगकर्ता नहीं)।
साधक_ऑफ_बाकॉन २

3

ग्रेग हेविल का जवाब बिल्कुल सही है। ध्यान दें कि Git के लिए वैकल्पिक पोर्सलेन उपलब्ध हैं, जिनमें Easy Git, yap, pyrite और vng शामिल हैं। प्रत्येक का उद्देश्य समुदाय के कुछ हिस्से के लिए Git को सीखना / उपयोग करना आसान बनाना है। इन सभी परियोजनाओं के लिंक ईज़ी गेट पृष्ठ पर है: http://people.gnome.org/~newren/eg/



1

गिट में चीनी मिट्टी के बरतन के दो अलग-अलग अर्थ हैं।

इन दो अर्थों, जबकि यह तर्क दिया जा सकता है कड़ाई से विरोधाभासी नहीं हैं, विरोधाभासी दिखाई दे सकते हैं।

ए। अवधारणात्मक (नलसाजी बनाम चीनी मिट्टी के बरतन)

आधिकारिक प्रो Git पुस्तक :

लेकिन क्योंकि Git शुरू में एक पूर्ण उपयोगकर्ता-अनुकूल VCS के बजाय एक संस्करण नियंत्रण प्रणाली के लिए एक टूलकिट था, इसमें कई उप-क्षेत्र होते हैं जो निम्न-स्तर का काम करते हैं और इन्हें UNIX- शैली के साथ जंजीरों में बांधने या स्क्रिप्ट से बुलाए जाने के लिए डिज़ाइन किया गया था। इन आदेशों को आम तौर पर गिट के "प्लंबिंग" कमांड के रूप में जाना जाता है, जबकि अधिक उपयोगकर्ता के अनुकूल कमांड को "चीनी मिट्टी के बरतन" कमांड कहा जाता है।

बी --porcelain / =porcelainविकल्प

कई git कमांड एक के साथ आते हैं --porcelain विकल्प जो है पटकथा के लिए बने।

git status' प्रलेखन :

--porcelain[=<version>]

स्क्रिप्ट के लिए एक आसान-से-पार्स प्रारूप में आउटपुट दें। यह लघु आउटपुट के समान है, लेकिन Git संस्करणों में स्थिर रहेगा और उपयोगकर्ता कॉन्फ़िगरेशन की परवाह किए बिना। जानकारी के लिए नीचे देखें।

git diffके प्रलेखन :

--word-diff[=<mode>]

चीनी मिटटी

      स्क्रिप्ट की खपत के लिए एक विशेष लाइन-आधारित प्रारूप का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.