version control केंद्रीकृत और वितरित संस्करण नियंत्रण प्रणाली के बीच तुलना




version-control comparison (15)

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

मैंने कहा कि मैं यह सोचने के लिए उपयोग करता हूं कि वितरित एससीएम बहुत सारे डेवलपर्स के लिए अलग-अलग चीजों के लिए उपयोगी थे लेकिन हाल ही में फैसला किया है कि एक केंद्रीकृत भंडार किसी भी वितरित कर सकता है जो बेहतर कर सकता है।

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

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

वितरित repos के बारे में अन्य अच्छी बात का जिक्र नहीं है: पूरा इतिहास हमेशा उपलब्ध है। नेट से दूर होने पर आपको संशोधन लॉग देखने की आवश्यकता है? आपको यह देखने के लिए स्रोत को एनोटेट करने की आवश्यकता है कि एक बग कैसे पेश किया गया था? वितरित repos के साथ सभी संभव है।

कृपया विश्वास न करें कि वितरित बनाम केंद्रीकृत स्वामित्व या आधिकारिक प्रतियों या उसके जैसा कुछ भी है। सच्चाई वितरित की जाती है एससीएम के विकास में अगला कदम है।

https://code.i-harness.com

केंद्रीकृत बनाम वितरित संस्करण नियंत्रण प्रणाली (डीवीसीएस) का उपयोग करने के साथ लाभ और कमी क्या हैं? क्या आपने डीवीसीएस में किसी भी समस्या का सामना किया है और आपने इन समस्याओं के खिलाफ कैसे सुरक्षा की है? चर्चा उपकरण अज्ञेयवादी रखें और कम से कम ज्वलंत रखें।

उन लोगों के लिए जो सोचते हैं कि डीवीसीएस उपकरण क्या उपलब्ध हैं, यहां सबसे अच्छी तरह से ज्ञात मुक्त / मुक्त स्रोत DVCSs की एक सूची है:


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


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

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


एकल डेवलपर परिदृश्य में भी वितरित एससीएम के लिए एक और प्लस यह है कि यदि आप में से कई लोगों की तरह, आप एक से अधिक मशीनों पर काम करते हैं।

मान लें कि आपके पास सामान्य स्क्रिप्ट का एक सेट है। यदि आपके द्वारा काम की जाने वाली प्रत्येक मशीन में एक क्लोन है जिसे आप मांग अपडेट पर कर सकते हैं और अपनी स्क्रिप्ट बदल सकते हैं। यह आपको देता है:

  1. एक समय बचतकर्ता, खासकर एसएसएच कुंजी के साथ
  2. विभिन्न प्रणालियों के बीच अंतर मतभेदों का एक तरीका (जैसे रेड हैट बनाम डेबियन, बीएसडी बनाम लिनक्स, आदि)

कुछ हद तक, दोनों योजनाएं बराबर हैं:

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

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

DVCSes का अन्य सकारात्मक लाभ यह है कि वे ऑफ़लाइन काम करते हैं। मैंने इसके लिए वास्तव में बहुत अधिक उपयोग नहीं किया है; मैं ज्यादातर कार्यालय में (इसलिए स्थानीय नेटवर्क पर भंडार) या घर पर विकास करता हूं (इसलिए एडीएसएल है)। यदि आप यात्रा करते समय लैपटॉप पर बहुत अधिक विकास करते हैं तो यह आपके लिए अधिक विचार हो सकता है।

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


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


मुख्य समस्या (स्पष्ट बैंडविड्थ मुद्दे से अलग) स्वामित्व है

यह सुनिश्चित करना है कि अलग-अलग (भौगोलिक) साइट दूसरे तत्व की तुलना में एक ही तत्व पर काम नहीं कर रही है।

आदर्श रूप से, उपकरण किसी फ़ाइल, शाखा या यहां तक ​​कि एक भंडार के स्वामित्व को असाइन करने में सक्षम है।

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


मुझे एहसास है कि Mercurial (और अन्य डीवीसीएस) केंद्रीकृत लोगों की तुलना में अधिक परिष्कृत हैं। मिसाल के तौर पर, मर्कुरियल में एक शाखा विलय करने से शाखा का पूरा इतिहास रहता है जबकि एसवीएन में आपको इतिहास देखने के लिए शाखा निर्देशिका में जाना पड़ता है।


मेरे लिए यह एक व्यक्तिगत स्वाद के बारे में एक और चर्चा है और वास्तव में उद्देश्य होना मुश्किल है। मैं व्यक्तिगत रूप से अन्य डीवीसीएस पर Mercurial पसंद करते हैं। मैं उसी भाषा में हुक लिखना पसंद करता हूं जैसे Mercurial लिखा है और छोटे नेटवर्क ओवरहेड - बस अपने कुछ कारणों से कहने के लिए।


मैं अब कई सालों से विचलन का उपयोग कर रहा हूं और मैं इसके साथ वास्तव में खुश था।

फिर जीआईटी buzz शुरू हुआ और मुझे बस इसका परीक्षण करना पड़ा। और मेरे लिए, मुख्य बिक्री बिंदु ब्रांचिंग था। ओह लड़का। अब मुझे अपने भंडार को साफ करने की आवश्यकता नहीं है, कुछ संस्करण या किसी भी मूर्ख चीजों को वापस करें जब मैंने उपversण का उपयोग किया था। सब कुछ डीवीडी में सस्ता है। मैंने केवल जीवाश्म और गिट की कोशिश की है, लेकिन मैंने perforce, cvs और subversion का उपयोग किया है और ऐसा लगता है कि डीवीडी में सभी वास्तव में सस्ते ब्रांचिंग और टैगिंग हैं। अब सभी कोड को एक तरफ कॉपी करने की आवश्यकता नहीं है और इसलिए विलय करना सिर्फ एक हवा है।

किसी भी डीवीडी को केंद्रीय सर्वर के साथ स्थापित किया जा सकता है, लेकिन आपको जो कुछ मिलता है वह अन्य चीजों के साथ होता है

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

और आप बिना नेटवर्क के काम कर सकते हैं।

तो संक्षेप में, एक संस्करण नियंत्रण का उपयोग करना हमेशा एक अच्छी बात है। डीवीसीएस का उपयोग करना सस्ता है (केबी और बैंडविड्थ में), और मुझे लगता है कि इसका उपयोग करना अधिक मजेदार है।

गिट चेकआउट करने के लिए: git
जीवाश्म चेकआउट करने के लिए: fossil-scm.org
चेकआउट करने के लिए Mercurial: https://www.mercurial-scm.org

अब, मैं केवल डीवीसीएस सिस्टम की सिफारिश कर सकता हूं, और आप आसानी से केंद्रीय सर्वर का उपयोग कर सकते हैं


वास्तव में तुलना नहीं है, लेकिन यहां बड़ी परियोजनाएं उपयोग कर रही हैं:

केंद्रीकृत वीसीएस

  • Subversion

    अपाचे, जीसीसी, रूबी, एमपीलेयर, ज़ोप, प्लोन, एक्सफ, फ्रीबीएसडी, वेबकिट, ...

  • सीवीएस

    सीवीएस

वितरित वीसीएसईएस

  • git

    लिनक्स कर्नेल, केडीई, पर्ल, रेल, एंड्रॉइड, वाइन, फेडोरा, एक्सआरओ, मीडियाविकी, डीजेगो, वीएलसी, मोनो, जीनोम, सांबा, सीयूपीएस, जीएनयूपीजी, इमाक्स ईएलपीए पर रूबी ...

  • Mercurial (एचजी)

    मोज़िला और मोजेदेव, ओपनजेडीके (जावा), ओपनसोलारिस, एएलएसए, एनटीएफएस-3 जी, डोवेकॉट, मोइनमोइन, म्यूट, पीईटीएससी, ऑक्टेव, एफईएनईसीएस, एटिट्यूड, पायथन, एक्सइमैक्स, ज़ेन, विम, ज़ीन ...

  • bzr

    Emacs, Apt, Mailman, MySQL, Squid, ... उबंटू के भीतर भी प्रचारित किया गया।

  • darcs

    ghc, आयन, xmonad, ... हास्केल समुदाय के भीतर लोकप्रिय।

  • fossil-scm.org

    SQLite


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

इसलिए यदि आप एक डीवीसीएस का उपयोग करना चाहते हैं, तो यह उन फ़ाइलों को प्रबंधित करने के लिए वास्तव में उपयुक्त नहीं है जो गैर-विलय योग्य हैं।


सही एससीएम के लिए मेरी खोज के दौरान, मुझे निम्नलिखित मदद मिली है जो बहुत मददगार हैं:

  1. बेहतर एससीएम पहल: तुलना । लगभग 26 संस्करण नियंत्रण प्रणाली की तुलना।
  2. संशोधन नियंत्रण सॉफ्टवेयर की तुलना । विकिपीडिया लेख 38 संस्करण नियंत्रण प्रणालियों की तुलना में तकनीकी मतभेद, विशेषताओं, उपयोगकर्ता इंटरफेस आदि जैसे विषयों को कवर करता है।
  3. वितरित संस्करण नियंत्रण प्रणाली । एक और तुलना, लेकिन मुख्य रूप से वितरित सिस्टम पर केंद्रित है।

मेरे उत्तर से एक अलग question :

वितरित संस्करण नियंत्रण प्रणाली (डीवीसीएस) केंद्रीकृत वीसीएस की तुलना में विभिन्न समस्याओं को हल करती है। उनकी तुलना करना हथौड़ों और पेंचदार की तुलना करना है।

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

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

एक प्रकार या दूसरे का उपयोग करने के बीच वास्तविक विकल्प संगठनात्मक है - यदि आपकी परियोजना या संगठन केंद्रीकृत नियंत्रण चाहता है, तो एक डीवीसीएस एक गैर-स्टार्टर है। यदि आपके डेवलपर्स को पूरे देश / दुनिया में काम करने की उम्मीद है, तो केंद्रीय भंडार के लिए सुरक्षित ब्रॉडबैंड कनेक्शन के बिना, तो डीवीसीएस शायद आपका उद्धार है। यदि आपको दोनों की ज़रूरत है, तो आप fsck'd हैं।


डब्ल्यू क्रेग ट्रेडर ने डीवीसीएस और सीवीसीएस के बारे में यह कहा:

यदि आपको दोनों की ज़रूरत है, तो आप fsck'd हैं।

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

एक सीवीसीएस पर डीवीसीएस के साथ कुछ फायदे हैं:

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

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

  • आज की दुनिया में, कंपनियां आम तौर पर ऑफ-किनारे डेवलपर्स के साथ काम करती हैं (या यदि वे घर से भी बेहतर काम करना चाहते हैं)। एक डीवीसीएस होने से इन तरह की परियोजनाओं में मदद मिलती है क्योंकि यह विश्वसनीय नेटवर्क कनेक्शन की आवश्यकता को समाप्त करता है क्योंकि हर किसी के पास अपना खुद का रेपो होता है।

... और कुछ नुकसान जो आमतौर पर कामकाज करते हैं:

  • नवीनतम संशोधन किसके पास है? एक सीवीसीएस में, ट्रंक में आमतौर पर नवीनतम संशोधन होता है, लेकिन एक डीवीसीएस में यह स्पष्ट रूप से स्पष्ट नहीं हो सकता है। कामकाज आचरण के नियमों का उपयोग कर रहा है, कि एक परियोजना में डेवलपर्स को एक समझौते पर आना होगा जिसमें रेपो को उनके काम में विलय करना है।

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

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





dvcs