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




version-control comparison (10)

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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


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

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

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

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


मुझे एहसास है कि 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


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

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

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

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

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

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

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





dvcs