एक संस्करण प्रणाली के लिए परमाणु प्रतिबद्ध द्वारा इसका क्या अर्थ है?


34

सीवीएस पर प्रोग्रामर एसवीएन को प्राथमिकता देने वाले कारणों में से एक है कि परमाणु परमाणु पूर्व अनुमति देता है? इसका क्या मतलब है ?


यह किसी की मदद कर सकता है , यह बताता है कि यह क्या है (यह उदाहरण के रूप में गिट का उपयोग करता है, लेकिन अन्य वीसीएस के लिए लागू करने में सक्षम हो सकता है)
फागनर ब्रैक

जवाबों:


69

इसका मतलब यह है कि जब आप संस्करण नियंत्रण प्रणाली के लिए एक प्रतिबद्ध करते हैं या तो आप जो कुछ भी करना चाहते हैं वह सब कुछ हो जाता है, या कुछ भी नहीं करता है।

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

एसवीएन में ऐसा नहीं होगा - एसवीएन या तो आपके द्वारा बदले गए सब कुछ को कम कर देगा, या यह पूरे बदलाव को विफल कर देगा। इस प्रकार, आप प्रतिबद्ध मुद्दों के कारण टूटी हुई स्थिति में भंडार को कभी नहीं छोड़ेंगे।


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

2
सीवीएस का उपयोग करने पर अंधेरे यादें मुझे स्ट्रोक करती हैं जबकि मैं यह पढ़ रहा हूं।
शबनम

9
@ सच - सच है, लेकिन यह एक जानबूझकर कार्य है। सीवीएस में, समस्याएं आपके स्वयं के दोष के माध्यम से हो सकती हैं, जबकि एसवीएन में आपको इस पर काम करना होगा।
माइकल कोहेन

3
@DanNeely - CVS उन्हें एक के बाद एक कर देता है। यही कारण है कि आपको आंशिक रूप से कमिटमेंट मिलता है - कुछ फाइलें गुजरती हैं, फिर यह बंद हो जाता है जब यह एक हिट करता है जो यह (एक संघर्ष के कारण) नहीं कर सकता है। यह सीवीएस का परिणाम है जो मूल रूप से आरसीएस से बाहर हो गया है, मुझे लगता है।
माइकल कोहेन

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

15

यह उदाहरण के लिए बाय-बाय सीवीएस में बताया गया है मैं एंडी लेस्टर द्वारा लिखा गया लेख प्रस्तुत कर रहा हूं :

अगर मैं तोड़फोड़ करने की कोशिश करता हूं, लेकिन फ़ाइलों में से एक में एक संघर्ष है, या बाहर की तारीख है, कोई भी फाइल नहीं जाती है। सीवीएस में, आपको फ़ाइलों का एक आधा-कमिटेड सेट मिला है जिसे आपको अभी राइट को ठीक करना है।

तथ्य यह है कि सीवीएस प्रोग्रामर को तुरंत विलय को ठीक करने के लिए मजबूर करता है, क्योंकि यह काउंटर-उत्पादक है। इसकी तुलना में, परिवर्तनों को विलंबित / रद्द / सावधानीपूर्वक रद्द करने का एक विकल्प पर्याप्त लाभ है।


उपरोक्त लेख में समझाया गया CVS पर SVN के अन्य लाभ हैं:

  • आपके द्वारा किए जाने वाले हर चीज के स्थानीय संस्करण
     
    यदि आप cvs को अलग करना चाहते हैं, तो आपको अपने भंडार से जुड़ने में सक्षम होना चाहिए। कोई नेट कनेक्शन, कोई अंतर नहीं। तोड़फोड़ आप क्या काम कर रहे हैं की स्थानीय प्राचीन प्रतियां संग्रहीत करता है, इसलिए svn diff सिर्फ ठीक काम करेगा। शुरू करना चाहते हैं? svn वापस काम करता है असंबद्ध, भी।

  • संशोधन के प्रतीकात्मक नाम
     
    HEAD सीवीएस में ट्रंक की नोक का नाम है, लेकिन मैं हमेशा "-r-1" कहने में सक्षम होना चाहता हूं जैसे मैं PVCS दिनों में वापस आ सकता हूं। CVS के साथ, मुझे एक cvs लॉग ऑन करना है जो मैं संपादित कर रहा हूं, और फिर एक को घटाएं। इसमें कोई मज़ा नहीं है। तोड़फोड़ के साथ, मैं svn diff -r PREV कह सकता हूं।

  • वास्तविक स्थिति रिपोर्टिंग
     
    सीवीएस में, एकमात्र तरीका जिसे आप देख सकते हैं कि सर्वर पर कुछ नया है, सीवीएस अपडेट के लिए है और आशा है कि जो भी नीचे आता है वह किसी भी टकराव का कारण नहीं बनता है। Svn स्थिति कमांड के साथ, मुझे वास्तविक स्थिति मिलती है, इसलिए मैं देख सकता हूं कि क्या कोई संघर्ष है या नहीं, मैं अपडेट करता हूं।


  •  
    सीवीएस में मर्ज संघर्षों की मदद से निपटने , यदि संघर्ष होते हैं, तो आपको अपनी फ़ाइल में संघर्ष मार्कर मिलते हैं। सबवर्सन में, आपको संघर्ष मार्कर मिलते हैं, साथ ही आपकी मूल, पूर्व-संघर्ष फ़ाइल की एक प्रति, साथ ही सर्वर से नीचे आए संस्करण को भी, वह संस्करण जिसे आप मूल रूप से संपादित कर रहे थे। उसके बाद, आपको स्पष्ट रूप से svn को हल करना होगा। फ़ाइल नाम को बदलना होगा। सीवीएस में अब भी संयोग से कोई और गलती नहीं है।


8

इसका अर्थ है कि सभी फ़ाइलों के लिए सभी परिवर्तन एक ही लेनदेन में प्रतिबद्ध हैं, इसलिए सभी सफल या कोई भी नहीं।

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


क्या यह अच्छी बात नहीं है? अन्यथा एक आंशिक कमिट के परिणामस्वरूप फाइलें सिंक से बाहर हो जाएंगी।
गीक

2
हाँ इसकी एक अच्छी बात है, आंशिक रूप से कमिट खराब हैं
jk।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.