चेकइन और चेकआउट में क्या अंतर है?


14

सॉफ़्टवेयर कॉन्फ़िगरेशन प्रबंधन में नए छात्रों के लिए SCM कक्षाएं पढ़ाते समय, ऐसा होता है कि एक प्रश्न " What's the difference between checkin and checkout?" की तरह आता है ।

और इसका एक रूपांतर यह है कि ऐसे छात्र इन एससीएम अवधारणाओं के बारे में भ्रमित हो जाते हैं (वे उन्हें दूसरे तरीके से समझते हैं)।

तो आप इस तरह के दर्शकों को इस महत्वपूर्ण SCM अवधारणा को समझाने के लिए किस तरह के रूपक का उपयोग कर सकते हैं?


चेकआउट = ताला; चेकिन = अनलॉक; जिस शाखा पर आप ऑपरेशन करते हैं, उस प्रश्न पर ऑब्जेक्ट को संपादित करने के लिए आप अनन्य लॉक लेते हैं।
जिरी क्लौडा

जवाबों:


8

किसी को कुछ समझाने के लिए, इसकी तुलना उन चीज़ों से करने की कोशिश करें जो वे (उम्मीद से) पहले से परिचित हैं।

इसलिए मैं सिर्फ इस तरह के सवाल का जवाब देता हूं:

रहने के लिए एक जगह पर पहुंचने के बारे में सोचें (होटल, रिसॉर्ट, आदि):

  • सबसे पहली चीज जो आप करते हैं (जब आप पहुंचते हैं) checkin
  • बहुत आखिरी चीज जो आप करते हैं (जब आप छोड़ते हैं) checkout

जब आप सॉफ़्टवेयर घटकों में परिवर्तन लागू करना चाहते हैं तो एक समान SCM अवधारणा लागू होती है ... सिवाय इसके कि यह दूसरे तरीके से लागू होती है :

  • बहुत पहली चीज जो आप करते हैं (जब आप शुरू करते हैं) checkout(या इसे उधार लेने की तरह सोचते हैं)।
  • बहुत आखिरी चीज जो आप करते हैं (जब आप खत्म करते हैं) checkin(या इसे वापस देने की तरह सोचते हैं)।

नोट : यह केंद्रीकृत प्रणालियों पर लागू होता है (जैसे कि मेनफ्रेम वातावरण में उपयोग किए जाने वाले ...)। जैसे सिस्टम में " checkout" कॉन्सेप्ट का पूरी तरह से अलग अर्थ है (जो कि IMO भी है, क्योंकि उन सिस्टम में दोनों कॉन्सेप्ट को लेकर शायद ही कोई कन्फ्यूजन हो)।


शायद कोड एक होटल के कमरे की तुलना में पुस्तकालय की किताब की तरह है?
टोबे स्पीट

यह एक बहुत भोला, आम आदमी का जवाब है। मैंने सोर्स कंट्रोल सिस्टम के इंटर्नल्स पर एक दशक तक काम किया है इसलिए मैंने आपके प्रश्न का थोड़ा और अधिक गहराई से उत्तर जोड़ा है।
जिरी क्लौडा

6

यह ध्यान रखना महत्वपूर्ण है कि "चेकइन" और "चेकआउट" शब्दों के SCM प्रणाली के प्रकार के आधार पर अलग-अलग अर्थ हैं।

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

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


वितरित सिस्टम के बारे में अच्छा बिंदु डेव! वास्तव में ऐसा इसलिए भी है क्योंकि मैं खुद पहली बार (जब मैंने पहली बार जीआईटी के बारे में सीखा था) बहुत उलझन में था। आपके उत्तर को अमान्य नहीं करने के लिए (मेरे प्रश्न को स्वीकार करके), मैंने इसे स्पष्ट करने के लिए अपने स्वयं के उत्तर को परिष्कृत कर दिया।
Pierre.Vriens

मुझे स्पष्ट करना चाहिए: गिट चेकआउट का उपयोग भंडार से वस्तुओं की जांच करने के लिए किया जाता है। वह एक शाखा या एक फ़ाइल हो सकती है।
डेव स्वर्सकी

4

केंद्रीकृत प्रणालियों के लिए, इसे तकनीकी पुस्तकालय की तरह सोचें। (कल्पना का खिंचाव हो सकता है कि यह काल्पनिक पुस्तकालय कैसे कार्य करता है ...)

यदि आप किसी दस्तावेज़ के लेखक हैं, तो आप checkoutलाइब्रेरी की प्रतिलिपि बना सकते हैं, परिवर्तन कर सकते हैं, इसे check it back inदुनिया के देखने के लिए लाइब्रेरी में वापस कर सकते हैं।

यह एक मुद्दा बन सकता है यदि पुस्तकालय में डिजिटल प्रतियां हैं, और मैं checkoutएक दस्तावेज हूं , कोई और भी checks outएक दस्तावेज है, हम दोनों बदलाव करते हैं, एक संघर्ष (मर्ज संघर्ष) होगा जिसे हल करना मुश्किल हो सकता है। जब इसके लिए प्रारंभिक "फिक्स" अनन्य checkoutकार्यक्षमता है ...


निश्चित रूप से बड़ी परियोजनाओं के लिए एक महत्वपूर्ण मर्ज संघर्ष मुद्दे की संभावना कम हो जाती है (लोग सिस्टम के विभिन्न हिस्सों पर काम कर रहे होंगे) तो checkout/ checkinलगभग उतना ही आवश्यक नहीं है। और चूंकि डिज़ाइन द्वारा वितरित सिस्टम को कुछ हद तक अच्छे मर्ज की कार्यक्षमता की आवश्यकता होती है, कई अन्य लाभों के साथ, यह अवधारणा वास्तव में git और अन्य DVCS में मौजूद नहीं है


इसे देखने का एक और तरीका है। हालांकि मेरे अनुभव में मुझे नहीं लगता कि "संघर्ष" और "विलय" जैसी चीजों को जोड़ना भी एक अच्छा विचार है (यदि वे चेकआउट और चेकइन के साथ अभी भी सहज महसूस नहीं करते हैं)।
Pierre.Vriens

फेयर, मैंने इसे जोड़ा क्योंकि इसका मुख्य कारण चेकआउट / चेकइन मौजूद है जिसके बारे में मैं सोच सकता था। और ऐसा लगता है कि एक अवधारणा को समझना बहुत मुश्किल है, अगर आपको नहीं पता कि यह अवधारणा वास्तव में किसके लिए उपयोगी है।
थाइमिन

2

तब मुख्य विषय के रूप में एससीएम भंडार के साथ '

  • चेकआउट परिवर्तन हो रहा है बाहर (अपने स्थानीय कार्यशील निर्देशिका में) स्थानीय या दूरदराज के भंडार से।
  • चेकइन लोकल या रिमोट रिपॉजिटरी (आपके स्थानीय वर्किंग डायरेक्टरी से) में बदलाव ला रहा है।

इस उत्तर के लिए भी मर्सी । यह वास्तव में इसे समझाने का एक तरीका है, हालांकि मुझे अभी भी आश्चर्य है कि क्या आप किसी प्रकार के "रूपक" (मेरे प्रश्न के अनुसार) के बारे में सोच सकते हैं। जैसे कि आप किसी ऐसे व्यक्ति को पढ़ा रहे हैं, जिसे यह समझाने के लिए भी कोई सुराग नहीं है कि स्थानीय या दूरस्थ भंडार वास्तव में क्या है।
Pierre.Vriens

सच है, अगर उनके पास इस बारे में कोई सुराग नहीं है कि एक रिपॉजिटरी क्या है तो चेकइन सिखाने की कोशिश कर रही है और चेकआउट अर्थहीन होगा। अब, सामान्य रूप से स्रोत नियंत्रण के लिए एक रूपक के लिए आप इसकी तुलना वित्तीय लेखांकन / बहीखाता पद्धति से कर सकते हैं। यह मूल रूप से परिसंपत्तियों के मूल्य में परिवर्तन का ट्रैक रख रहा है। आप टैक्सी टिकट + बस टिकर + ट्रेन टिकट + ... के बजाय एकल व्यक्तिगत परिवर्तन या परिवर्तन के समूह (जैसे "ए से बी तक यात्रा" रिकॉर्ड करते हैं) हालांकि बहुत बड़े समूह नहीं हैं (उदाहरण के लिए "सोमवार को सभी खर्च")। इसी तरह एक रिपॉजिटरी स्रोत कोड परिवर्तन, व्यक्तिगत या बहुत बड़े समूहों का ट्रैक नहीं रखती है।
हवलदार

1
  • चेकआउट एक रिपॉजिटरी में ऑब्जेक्ट की एक शाखा को संशोधित करने पर एक विशेष लॉक है।
  • चेकइन एक्सक्लूसिव लॉक की एक रिलीज है।

ब्रांचिंग की सबसे छोटी इकाई क्या है, इसके आधार पर दो तरह के सोर्स कंट्रोल सिस्टम हैं।

1) प्रति रिपॉजिटरी ब्रांचिंग (CVS, SVN, GIT, Perforce, ... आदि)

उन उत्पादों में जहां आप संपूर्ण रिपॉजिटरी को शाखा देते हैं, चेकआउट आमतौर पर पूरे रिपॉजिटरी के स्थानीय शाखा (कॉपी) में संशोधनों को बनाएगा या सक्षम करेगा। उन उत्पादों में चेकइन का अक्सर इस्तेमाल नहीं किया जाता है और यह कमिट ऑपरेशन का एक हिस्सा बन जाता है , जो एक बार रिमोट ब्रांच के चेकआउट , लोकल पैच लगाने और सिंगल ऑपरेशन में रिमोट ब्रांच के चेकइन का काम करता है। आप नहीं करते चेक इन अपनी स्थानीय शाखा के रूप में यह स्थायी रूप से बाहर की जाँच की है। (नोट: जीआईटी में आप दूरस्थ शाखा के लिए प्रतिबद्ध नहीं हैं, आप अपनी स्थानीय प्रतिबद्धताओं को इसमें ढकेल दें। कड़ाई से वाक्यगत अंतर। )

2) प्रति वस्तु शाखाकरण (क्लियरकेस, एक्यूआरव, ओरेकल एडीई)

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


हे जिरी, आपके उत्तर के लिए योग्यता। उन 2 प्रकारों के लिए जिनका आपने उल्लेख किया है मैं सहमत हूँ। लेकिन मेनफ्रेम दुनिया में SCM टूल्स (क्या मेरा अनुभव इससे उत्पन्न हुआ है) कोई भी "लॉकिंग" को ध्यान में नहीं रखता है ... क्या आप अपने जवाब में एक 3 तरह जोड़ने का तरीका सोच सकते हैं?
Pierre.Vriens

क्या आप मुझे एक उत्पाद का उदाहरण दे सकते हैं जो उन दो श्रेणियों में फिट नहीं है? मैं आपको बता सकता हूं कि 2 में से कौन सा फिट बैठता है या एक तिहाई जोड़ देता है, अगर वास्तव में एक है। चेकआउट और चेकइन एक शाखा पर परिचालन हैं जो इसे संशोधित करने का अधिकार देते हैं और जारी करते हैं। इसलिए इस सवाल के लिए किसी उत्पाद की शाखाओं (संपूर्ण भंडार या व्यक्तिगत वस्तुओं) का विभाजन स्वाभाविक है। मुझे नहीं पता कि अगर बीच में कुछ है, तो यह क्या होगा? पेरफोर्स और सबजिट में उपप्रकारों की शाखाएं अनिवार्य रूप से पहली श्रेणी हैं। लॉक केवल 'अनन्य अधिकार' के लिए एक अलग नाम है।
जेरी क्लौडा

BTW पुस्तकालय रूपक जैसा कि पहले उल्लेख किया गया है, वास्तव में एक अच्छा है। जब आप किसी पुस्तक की जांच करते हैं, तो आपको उसका विशेष अधिकार प्राप्त होता है। आप इसे घर ले जाएं और कृपया इसे अपने साथ रखें। इसे पढ़ें या यहां तक ​​कि हाशिये में पड़े नोटों को और कोई भी पुस्तक को संशोधित नहीं कर सकता है, जबकि आपने इसे देख लिया है। जैसे इसके कुछ पेज को हटा दें या कुछ लाइनों को हाइलाइट करें। जब आप पुस्तक की जांच करते हैं, तो लोग इसे पुस्तकालय में पढ़ सकते हैं, जहां लाइब्रेरियन की चौकस नजर किसी भी संशोधन (बर्बरता) की अनुमति नहीं देती है या इसे बाहर की जाँच करें और इसे घर ले जाएं। यह उस पुस्तक के परिवर्तनों को क्रमबद्ध करता है।
जिरी क्लौडा

सादृश्य को जारी रखने के लिए, पुस्तकालय की एक अलग शाखा में, एक ही पुस्तक अलग-अलग संशोधनों के साथ हो सकती है या पूरी तरह से अनलेच्ड या बिल्कुल भी नहीं हो सकती है। कोई और इसे उसी समय देख सकता है (यानी चेकआउट प्रति शाखा है)। अब मूल लेखक 2 संस्करण पर काम करता है, बोलने के लिए एक मास्टर शाखा। वह कई शाखाओं से नोट्स पढ़ सकता है, उन्हें एक साथ मर्ज कर सकता है, मास्टर शाखा की जांच कर सकता है और 2 वें संस्करण की जांच कर सकता है। लाइब्रेरी की प्रत्येक शाखा 2 संस्करण खरीदकर उनकी कॉपी को रीफ्रेश करेगी। वे 1 या कॉपी अभी भी उपयोगी नोटों को हाशिये से नए संस्करण में छोड़ सकते हैं।
जिरी क्लौडा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.